Subject: | Net::Curl::Easy::reset() causes a segfault |
Example program which always causes a Segmentation fault:
#!/usr/bin/env perl
use common::sense;
use Net::Curl::Easy qw(:constants);
my $easy = Net::Curl::Easy->new({});
$easy->setopt(CURLOPT_URL, q(http://ifconfig.me/all));
$easy->perform;
$easy->reset;
$easy->setopt(CURLOPT_URL, q(http://ifconfig.me/ip));
$easy->perform;
GDB output from the dumped core:
Core was generated by `perl curl-reset.pl'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007f630caa4116 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) where
#0 0x00007f630caa4116 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f630caa517f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007f630caa8e12 in calloc () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007f630bed2c22 in curl_docalloc (wanted_elements=1, wanted_size=1656, line=3597, source=0x7f630bf0306e "url.c") at memdebug.c:216
#4 0x00007f630beb8b84 in allocate_conn (data=0x1b72968) at url.c:3597
#5 0x00007f630bebb553 in create_conn (data=0x1b72968, in_connect=0x7fffaa5b4670, async=0x7fffaa5b464e) at url.c:4857
#6 0x00007f630bebc4bd in Curl_connect (data=0x1b72968, in_connect=0x7fffaa5b4670, asyncp=0x7fffaa5b464e, protocol_done=0x7fffaa5b464f) at
url.c:5327
#7 0x00007f630becd700 in connect_host (data=0x1b72968, conn=0x7fffaa5b4670) at transfer.c:1948
#8 0x00007f630becda02 in Curl_do_perform (data=0x1b72968) at transfer.c:2095
#9 0x00007f630becdd7c in Curl_perform (data=0x1b72968) at transfer.c:2241
#10 0x00007f630bece7a3 in curl_easy_perform (curl=0x1b72968) at easy.c:536
#11 0x00007f630c133e5e in XS_Net__Curl__Easy_perform (cv=<optimized out>) at ./curl-Easy-xs.inc:396
#12 0x00000000004de372 in Perl_pp_entersub () at pp_hot.c:2778
#13 0x00000000004ac14b in Perl_runops_debug () at dump.c:2119
#14 0x0000000000443455 in S_run_body (oldscope=1) at perl.c:2402
#15 perl_run (my_perl=<optimized out>) at perl.c:2320
#16 0x000000000041fa1d in main (argc=2, argv=0x7fffaa5b4a38, env=0x7fffaa5b4a50) at perlmain.c:120