Re: after upgrade: glibc detected *** /usr/bin/perl: double free or corruption

Peter Daum <[email protected]>
Newsgroups gmane.comp.lang.perl.beginners,gmane.comp.lang.perl.modules.ldap
Message-ID <[email protected]>
Peter Daum wrote:
> I recently upgraded a system (as far as perl is concerned from 5.8.8 to 
> 5.10.0). Afterwards I ran into a mysterious problem. I could eventually
 > find a  workaround, but still don't really understand, what is going on.
> 
> After the upgrade, a perl program wouldn't run anymore - it crashed with 
> a message:"*** glibc detected *** /usr/bin/perl: double free or corruption 
> (fasttop): ..." and a memory map suggesting some problem on the heap.
> The crash can be reproduced by the following code:
> 
> 
> use Net::LDAP;
> my $self=Net::LDAP->new("127.0.0.1");
> ($self->{prog_name}= $0) =~ s|^.*/([^/]+)$|$1|;
> 
> # when I put an intermediate variable into the statement:
> 
> $self->{prog_name}= (my $_p= $0) =~ s|^.*/([^/]+)$|$1|;
> 
> the program works again.
> 
> Technically, my problem is solved, but maybe somebody here can shed some 
> light on some questions:
> 
  > - I tried to run the program under the debugger hoping to find, where
>    exactly the error occurs - unfortunately the same program suddenly worked
 >    just  fine, so I ended up putting print statements into the code until I
 >    eventually  found the problematic line. Why can't the crash be reproduced
 >    under the debugger? Would there be an easier way to find the problem?
> 
> - Generally, I still don't understand what's wrong with the original 
>   program code.I didn't try it but I don't think it is anything specific to 
>   Net::LDAP. However, when $self is just some hash reverence ("my $self={}"),
 >   the code also works without any problem.

Actually, it seems like the problem is indeed specific to Net::LDAP; furthermore,
the crash only occurs, if there is a LDAP server running at the specified address.

I still would love to know where exactly the problem is.
Is there a bug somewhere in Perl or in Net::LDAP?
Am I doing something wrong? (well, some might argue that it's a bad to
rely on Net::LDAP::new returning a hash reference and isn't using a key named
"prog_name" ...)

Regards,
                      Peter Daum


-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.