regresja: gcc? curl?

Patryk Zawadzki patrys w pld-linux.org
Śro, 10 Paź 2007, 01:37:01 CEST


Jest sobie smart, który używa pycurl. Zdycha mi on o tak ładnie:

(gdb) backtrace
#0  *__GI___libc_free (mem=0x63656863) at malloc.c:3596
#1  0xb77a78fb in Curl_setopt (data=0x86e9040, option=CURLOPT_URL,
    param=0xbfa5e228 "\2301Y\b<TUTAJ LOSOWE KRZAKI>") at url.c:1314
#2  0xb77b3090 in curl_easy_setopt (curl=0x6365685b, tag=CURLOPT_URL)
    at easy.c:362
#3  0xb77f4110 in ?? () from /usr/lib/python2.5/site-packages/pycurl.so
#4  0x086e9040 in ?? ()
#5  0x00002712 in do_share_new (dummy=0x8691584) at src/pycurl.c:588
#6  0xb7e47cdc in PyCFunction_Call (func=0x8175dac, arg=0x8304fec, kw=0x0)
    at Objects/methodobject.c:73
#7  0xb7e901e7 in PyEval_EvalFrameEx (f=0x839f714, throwflag=0)
    at Python/ceval.c:3564

Ciekawe rzeczy:

(gdb) up 1
#1  0xb77a78fb in Curl_setopt (data=0x86e9040, option=CURLOPT_URL,
    param=0xbfa5e228 "\2301Y\b<TUTAJ LOSOWE KRZAKI>") at url.c:1314
1314          free(data->change.url);
(gdb) p data->change
$1 = {
  url = 0x63656863 <Address 0x63656863 out of bounds>,
  url_alloc = 107,
  url_changed = 115,
  referer = 0x20200a3e <Address 0x20200a3e out of bounds>,
  referer_alloc = 32,
  cookielist = 0x73656d69
}
(gdb) up 2
#3  0xb77c2130 in do_curl_setopt (self=0x83be074, args=0x87856ec)
    at src/pycurl.c:1563
1563            res = curl_easy_setopt(self->handle, (CURLoption)option, buf);
(gdb) p buf
$2 = 0x84c7db0 "ftp://ftp.th.pld-linux.org/dists/th/test/i686/RPMS/repodata/primary.xml.gz"

Pola url_alloc i url_changed to wartości TRUE/FALSE, ani 107 ani 115
nie jest prawidłową wartością. Z pythona (pycurl) przekazane zostały
prawidłowe parametry (ramka #3).

Jakaś dziwna regresja? Jestem w stanie odtworzyć to za każdym razem.
Wygląda, jakby calloc nie zerował pamięci?

-- 
Patryk Zawadzki
Generated Content


Więcej informacji o liście dyskusyjnej pld-devel-pl