Subject: | Segmentation fault by access to CURLINFO_PRIVATE |
Hello,
An attempt to access the value of CURLINFO_PRIVATE (previously set by
CURLOPT_PRIVATE) causes a segmentation fault.
According to the curl C API documentation the contents of
CURLINFO_PRIVATE and CURLOPT_PRIVATE aren't used in any way internally
and it seemed like a good way of passing a value from a callback
function to its caller.
Example code and a trace from GDB are attached to this ticket.
The environment is the following:
Perl:
$ perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi
OS:
$ uname -a
Linux pdata3 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64
x86_64 x86_64 GNU/Linux
$ cat /etc/redhat-release
CentOS release 5.5 (Final)
$ rpm -qa | grep -i curl
curl-7.15.5-9.el5
perl-WWW-Curl-4.14-1
The same behavior is observed with WWW::Curl compiled with the latest
libcurl-7.21, as well.
Best regards,
/Daniel
Subject: | a.pl |
#!/usr/bin/perl -wT
use strict;
use WWW::Curl::Easy;
my $curl = new WWW::Curl::Easy;
$curl->setopt (CURLOPT_PRIVATE, 10);
print $curl->getinfo (CURLINFO_PRIVATE), "\n";
Subject: | gdb.txt |
Core was generated by `/usr/bin/perl -wT ./foo.pl'.
Program terminated with signal 11, Segmentation fault.
#0 0x0000003980c797c0 in strlen () from /lib64/libc.so.6
(gdb) where
#0 0x0000003980c797c0 in strlen () from /lib64/libc.so.6
#1 0x0000003983499330 in Perl_newSVpv ()
from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#2 0x00002b72e7b2dbd1 in XS_WWW__Curl__Easy_getinfo (my_perl=0x1ed60010,
cv=<value optimized out>) at Curl.xs:897
#3 0x0000003983490a96 in Perl_pp_entersub ()
from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#4 0x000000398348a33e in Perl_runops_standard ()
from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#5 0x000000398343808a in perl_run ()
from /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE/libperl.so
#6 0x00000000004017bc in main ()