git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* git-send-email warnings & process dying of signal 11
@ 2019-01-01 22:45 Rafał Miłecki
  2019-01-03  7:22 ` Rafał Miłecki
  0 siblings, 1 reply; 3+ messages in thread
From: Rafał Miłecki @ 2019-01-01 22:45 UTC (permalink / raw)
  To: git

Hello & Happy New Year!

I've recently switched from openSUSE 42.3 (perl 5.18.2 & git 2.13.7) to
the openSUSE Tumbleweed (perl 5.28.1 & git 2.20.1) and send-email
doesn't work for me anymore.

FWIW it doesn't seem like a git regression. I've manually installed
2.13.7 in my new OS and it also fails.

It basically fails with the:
Warning: unable to close filehandle __ANONIO__ properly: Bad file descriptor at /usr/lib/git/git-send-email line 812.
Warning: unable to close filehandle __ANONIO__ properly: Bad file descriptor at /usr/lib/git/git-send-email line 812.
error: git-send-email died of signal 11

Relevant perl source:
    802  sub ask {
    803          my ($prompt, %arg) = @_;
    804          my $valid_re = $arg{valid_re};
    805          my $default = $arg{default};
    806          my $confirm_only = $arg{confirm_only};
    807          my $resp;
    808          my $i = 0;
    809          return defined $default ? $default : undef
    810                  unless defined $term->IN and defined fileno($term->IN) and
    811                         defined $term->OUT and defined fileno($term->OUT);
    812          while ($i++ < 10) {
    813                  $resp = $term->readline($prompt);
    814                  if (!defined $resp) { # EOF
    815                          print "\n";
    816                          return defined $default ? $default : undef;
    817                  }
    818                  if ($resp eq '' and defined $default) {
    819                          return $default;
    820                  }
    821                  if (!defined $valid_re or $resp =~ /$valid_re/) {
    822                          return $resp;
    823                  }
    824                  if ($confirm_only) {
    825                          my $yesno = $term->readline(
    826                                  # TRANSLATORS: please keep [y/N] as is.
    827                                  sprintf(__("Are you sure you want to use <%s> [y/N]? "), $resp));
    828                          if (defined $yesno && $yesno =~ /y/i) {
    829                                  return $resp;
    830                          }
    831                  }
    832          }
    833          return;
    834  }

It seems that the "return defined" line causes warnings.

I don't know perl but I tried patching /usr/lib/git/git-send-email with
the attached diff and got a following output:

Warning: unable to close filehandle __ANONIO__ properly: Bad file descriptor at /usr/lib/git/git-send-email line 812.
Warning: unable to close filehandle __ANONIO__ properly: Bad file descriptor at /usr/lib/git/git-send-email line 812.
term: Term::ReadLine=HASH(0x56138dd97c50)
*** buffer overflow detected ***: /usr/bin/perl terminated
error: git-send-email died of signal 6

It makes me suspect that maybe readline() call causes a crash.

Does this report make sense? Is there anything else I can provide?

--- /usr/lib/git/git-send-email.orig    2019-01-01 23:38:35.980954492 +0100
+++ /usr/lib/git/git-send-email 2019-01-01 23:37:58.964956240 +0100
@@ -810,7 +810,9 @@
                 unless defined $term->IN and defined fileno($term->IN) and
                        defined $term->OUT and defined fileno($term->OUT);
         while ($i++ < 10) {
+               print STDERR "term: $term\n";
                 $resp = $term->readline($prompt);
+               print STDERR "readline done\n";
                 if (!defined $resp) { # EOF
                         print "\n";
                         return defined $default ? $default : undef;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: git-send-email warnings & process dying of signal 11
  2019-01-01 22:45 git-send-email warnings & process dying of signal 11 Rafał Miłecki
@ 2019-01-03  7:22 ` Rafał Miłecki
  2019-01-04  6:25   ` Carlo Arenas
  0 siblings, 1 reply; 3+ messages in thread
From: Rafał Miłecki @ 2019-01-03  7:22 UTC (permalink / raw)
  To: git

On 2019-01-01 23:45, Rafał Miłecki wrote:
> Hello & Happy New Year!
> 
> I've recently switched from openSUSE 42.3 (perl 5.18.2 & git 2.13.7) to
> the openSUSE Tumbleweed (perl 5.28.1 & git 2.20.1) and send-email
> doesn't work for me anymore.
> 
> FWIW it doesn't seem like a git regression. I've manually installed
> 2.13.7 in my new OS and it also fails.
> 
> It basically fails with the:
> Warning: unable to close filehandle __ANONIO__ properly: Bad file
> descriptor at /usr/lib/git/git-send-email line 812.
> Warning: unable to close filehandle __ANONIO__ properly: Bad file
> descriptor at /usr/lib/git/git-send-email line 812.
> error: git-send-email died of signal 11

It appears to be a problem with (my?) perl. I've tried reporting it:
https://rt.perl.org/Public/Bug/Display.html?id=133750

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: git-send-email warnings & process dying of signal 11
  2019-01-03  7:22 ` Rafał Miłecki
@ 2019-01-04  6:25   ` Carlo Arenas
  0 siblings, 0 replies; 3+ messages in thread
From: Carlo Arenas @ 2019-01-04  6:25 UTC (permalink / raw)
  To: Rafał Miłecki; +Cc: git

one important point to consider when tracking this bug is that perl is
not crashing, but is told to abort by some instrumentation (most
likely gcc's fortify) and as shown by :

*** buffer overflow detected ***: /usr/bin/perl terminated

Carlo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-01-04  6:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-01 22:45 git-send-email warnings & process dying of signal 11 Rafał Miłecki
2019-01-03  7:22 ` Rafał Miłecki
2019-01-04  6:25   ` Carlo Arenas

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).