Loading ...
Sorry, an error occurred while loading the content.

Gentoo, glibc double free

Expand Messages
  • jamethiel_w
    Hmmm... I have a simple SOAP server: -- #!/usr/bin/perl -w use strict; use lib /etc/perl ; use lib /usr/lib/perl5/site_perl/5.8.6/i686-linux-thread-multi ;
    Message 1 of 1 , Oct 24, 2005
    • 0 Attachment
      Hmmm...

      I have a simple SOAP server:

      --
      #!/usr/bin/perl -w

      use strict;

      use lib "/etc/perl";
      use lib "/usr/lib/perl5/site_perl/5.8.6/i686-linux-thread-multi";
      use lib "/usr/lib/perl5/site_perl/5.8.6";
      use lib "/usr/lib/perl5/site_perl";
      use lib "/usr/lib/perl5/vendor_perl/5.8.6/i686-linux-thread-multi";
      use lib "/usr/lib/perl5/vendor_perl/5.8.6";
      use lib "/usr/lib/perl5/vendor_perl";
      use lib "/usr/lib/perl5/5.8.6/i686-linux-thread-multi";
      use lib "/usr/lib/perl5/5.8.6";
      use lib "/usr/local/lib/site_perl";

      use SOAP::Transport::HTTP +trace => [ qw(all) ];

      my $daemon=SOAP::Transport::HTTP::Daemon
      -> new(LocalPort=>881)
      -> dispatch_to("/usr/local/soap");

      print "Contact to SOAP server at ",$daemon->url,"\n";
      $daemon->handle();
      --

      However, it causes glib to do a double free - excuse the formatting:

      --
      [extract from strace perl soap-daemon.pl]

      munmap(0xb7bf9000, 528384) = 0
      mmap2(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
      -1, 0) = 0xb74ba000 mprotect(0xb74ba000, 4096, PROT_NONE) = 0
      clone(child_stack=0xb7cba504,
      flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SY
      SVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
      parent_tidptr=0xb7cbabf8, {entry_number:6, base_addr:0xb7cbabb0,
      limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
      limit_in_pages:1, seg_not_present:0, useable:1},
      child_tidptr=0xb7cbabf8) = 31438 futex(0xb7cbabf8, FUTEX_WAIT, 31438,
      NULL) = 0 fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK) = 0
      read(5, 0x91b4b88, 8192) = -1 EAGAIN (Resource
      temporarily unavailable) fcntl64(5, F_SETFL, O_RDWR) = 0
      write(5, "\1\0\0\0\1", 5) = 5
      shutdown(5, 2 /* send and receive */) = 0
      close(5) = 0
      stat64("/usr/lib/perl5/site_perl/5.8.6//i686-linux-thread-multi/auto/DB
      I/DESTROY.al", 0x8a5bfe8) = -1 ENOENT (No such file or directory)
      open("/usr/local/lib/site_perl/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/5.8.6/i686-linux-thread-multi/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/5.8.6/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) =
      -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/vendor_perl/5.8.6/i686-linux-thread-multi/auto/DBI
      /DESTROY.al", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or
      directory) open("/usr/lib/perl5/vendor_perl/5.8.6/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/vendor_perl/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/site_perl/5.8.6/i686-linux-thread-multi/auto/DBI/D
      ESTROY.al", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or
      directory) open("/usr/lib/perl5/site_perl/5.8.6/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/usr/lib/perl5/site_perl/auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/etc/perl/auto/DBI/DESTROY.al", O_RDONLY|O_LARGEFILE) = -1 ENOENT
      (No such file or directory) open("./auto/DBI/DESTROY.al",
      O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
      open("/dev/tty", O_RDWR|O_NONBLOCK|O_NOCTTY) = 5 writev(5, [{"*** glibc
      detected *** ", 23}, {"double free or corruption (!prev"..., 33}, {":
      0x", 4}, {"08fd5990", 8}, {" ***\n", 5}], 5) = 73
      rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 tgkill(31437, 31437,
      SIGABRT) = 0 --- SIGABRT (Aborted) @ 0 (0) ---
      +++ killed by SIGABRT +++
      --

      Does this shed any light at all? It does this when I run it under
      Apache2 as well.

      what other information would I need to better diagnose this problem?

      DSL
    Your message has been successfully submitted and would be delivered to recipients shortly.