Package: libneon27
Version: 0.28.2-2

--- Please enter the report below this line. ---

I am experimenting a segfault on a WebDAV connection through HTTPS with
libneon27-0.28.2-2.

I experiment the problem on all plate-form I tried out (mainly x86 and
amd64). Here is a gdb trace of the problem (I reach the problem through
a sitecopy request):

[EMAIL PROTECTED] gdb `which sitecopy`
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) break ne_request.c:349
No source file named ne_request.c.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 1 (ne_request.c:349) pending.
(gdb) run --fetch LaBRI
Starting program: /usr/bin/sitecopy --fetch LaBRI
sitecopy: Fetching site `LaBRI' (on webdav.labri.fr in /perso/fleury/)

Breakpoint 1, send_request_body (req=0x724820, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
349         notify_status(sess, ne_status_sending);
(gdb) c
Continuing.
Checksumming home.html: [..] done.
Checksumming bug_transmeta.html: [...] done.
Checksumming p7120.html: [...] done.
Checksumming hacking.html: [..] done.
Checksumming development.html: [..] done.
Checksumming research.html: [..] done.
Checksumming index.php: [..] done.
Checksumming teaching.html: [..] done.
Checksumming publications.html: [...] done.

Breakpoint 1, send_request_body (req=0x7428a0, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
349         notify_status(sess, ne_status_sending);
(gdb) s
347         req->session->status.sr.progress = 0;
(gdb)
348         req->session->status.sr.total = req->body_length;
(gdb)
349         notify_status(sess, ne_status_sending);
(gdb)
notify_status (sess=0x633480, status=ne_status_sending)
    at /neon27-0.28.2/src/ne_request.c:221
221         if (sess->notify_cb) {
(gdb)
222             sess->notify_cb(sess->notify_ud, status, &sess->status);
(gdb)
progress_notifier (userdata=0x633480, status=ne_status_sending,
info=0x6335e0)
    at /neon27-0.28.2/src/ne_session.c:216
216         if (status == ne_status_sending || status ==
ne_status_recving) {
(gdb) n
213     {
(gdb)
216         if (status == ne_status_sending || status == ne_status_recving) {
(gdb)
217             sess->progress_cb(sess->progress_ud, info->sr.progress,
info->sr.total);
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()

**********************************************************************

As you see, the problem occurs in ne_session.c:216. Here is a more
detailled trace:

**********************************************************************

[EMAIL PROTECTED] LaBRI]$ gdb `which sitecopy`
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu"...
(gdb) break ne_request.c:349
No source file named ne_request.c.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 1 (ne_request.c:349) pending.
(gdb) run --fetch LaBRI
Starting program: /usr/bin/sitecopy --fetch LaBRI
sitecopy: Fetching site `LaBRI' (on webdav.labri.fr in /perso/fleury/)

Breakpoint 1, send_request_body (req=0x724820, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
349         notify_status(sess, ne_status_sending);
(gdb) c
Continuing.
Checksumming home.html: [..] done.
Checksumming bug_transmeta.html: [...] done.
Checksumming p7120.html: [...] done.
Checksumming hacking.html: [..] done.
Checksumming development.html: [..] done.
Checksumming research.html: [..] done.
Checksumming index.php: [..] done.
Checksumming teaching.html: [..] done.
Checksumming publications.html: [...] done.

Breakpoint 1, send_request_body (req=0x7428a0, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
349         notify_status(sess, ne_status_sending);
(gdb) s
347         req->session->status.sr.progress = 0;
(gdb)
348         req->session->status.sr.total = req->body_length;
(gdb)
349         notify_status(sess, ne_status_sending);
(gdb)
notify_status (sess=0x633480, status=ne_status_sending)
    at /neon27-0.28.2/src/ne_request.c:221
221         if (sess->notify_cb) {
(gdb)
222             sess->notify_cb(sess->notify_ud, status, &sess->status);
(gdb)
progress_notifier (userdata=0x633480, status=ne_status_sending,
info=0x6335e0)
    at /neon27-0.28.2/src/ne_session.c:216
216         if (status == ne_status_sending || status == ne_status_recving) {
(gdb)
213     {
(gdb)
216         if (status == ne_status_sending || status == ne_status_recving) {
(gdb)
217             sess->progress_cb(sess->progress_ud, info->sr.progress,
info->sr.total);
(gdb) bt
#0  progress_notifier (userdata=0x633480, status=<value optimized out>,
    info=0x6335e0)
    at /neon27-0.28.2/src/ne_session.c:217
#1  0x00007fca6f359105 in send_request_body (req=0x7428a0, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
#2  0x00007fca6f35a67f in send_request (req=0x7428a0, request=0x726d90)
    at /neon27-0.28.2/src/ne_request.c:942
#3  0x00007fca6f359cb2 in ne_begin_request (req=0x7428a0)
    at /neon27-0.28.2/src/ne_request.c:1163
#4  0x00007fca6f35a38d in ne_request_dispatch (req=0x7428a0)
    at /neon27-0.28.2/src/ne_request.c:1372
#5  0x00007fca6f365a0d in propfind (handler=0x739570,
    results=0x40d760 <pfind_results>, userdata=0x7fff7778c5d0)
    at /neon27-0.28.2/src/ne_props.c:143
#6  0x000000000040d716 in fetch_list ()
#7  0x00000000004050e3 in site_fetch ()
#8  0x0000000000410ed5 in act_on_site ()
#9  0x0000000000411c7f in main ()
(gdb) p status
$1 = <value optimized out>
(gdb) p sess
No symbol "sess" in current context.
(gdb) info frame
Stack level 0, frame at 0x7fff7778a1e0:
 rip = 0x7fca6f35ad30 in progress_notifier
    (/neon27-0.28.2/src/ne_session.c:217); saved rip 0x7fca6f359105
 called by frame at 0x7fff7778c220
 source language c.
 Arglist at 0x7fff7778a1d0, args: userdata=0x633480,
    status=<value optimized out>, info=0x6335e0
 Locals at 0x7fff7778a1d0, Previous frame's sp is 0x7fff7778a1e0
 Saved registers:
  rip at 0x7fff7778a1d8
(gdb) s

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()

**********************************************************************

After SIGSEV is reached, the frame and the backtrace looks like this:

**********************************************************************


(gdb) info frame
Stack level 0, frame at 0x7fff7778a1e0:
 rip = 0x0; saved rip 0x7fca6f359105
 called by frame at 0x7fff7778c220
 Arglist at 0x7fff7778a1d0, args:
 Locals at 0x7fff7778a1d0, Previous frame's sp is 0x7fff7778a1e0
 Saved registers:
  rip at 0x7fff7778a1d8
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00007fca6f359105 in send_request_body (req=0x7428a0, retry=1)
    at /neon27-0.28.2/src/ne_request.c:349
#2  0x00007fca6f35a67f in send_request (req=0x7428a0, request=0x726d90)
    at /neon27-0.28.2/src/ne_request.c:942
#3  0x00007fca6f359cb2 in ne_begin_request (req=0x7428a0)
    at /neon27-0.28.2/src/ne_request.c:1163
#4  0x00007fca6f35a38d in ne_request_dispatch (req=0x7428a0)
    at /neon27-0.28.2/src/ne_request.c:1372
#5  0x00007fca6f365a0d in propfind (handler=0x739570,
    results=0x40d760 <pfind_results>, userdata=0x7fff7778c5d0)
    at /neon27-0.28.2/src/ne_props.c:143
#6  0x000000000040d716 in fetch_list ()
#7  0x00000000004050e3 in site_fetch ()
#8  0x0000000000410ed5 in act_on_site ()
#9  0x0000000000411c7f in main ()


**********************************************************************

My guess is that saved eip is over-written when accessed but I have no
clue why. :-(

If you find out why or if you want to try out some things on my trace (I
easily admit that the bug isn't easy to reproduce out of the context of
sitecopy and the content of my website), feel free to ask !

By the way, I did this on amd64 but I can easily do it on x86 (I guess
it will be the same more or less).

--- System information. ---
Architecture: amd64
Kernel:       Linux 2.6.25.3

Debian Release: lenny/sid
  500 unstable        www.debian-multimedia.org
  500 unstable        ftp.fr.debian.org

--- Package information. ---
Depends               (Version) | Installed
===============================-+-================
libc6                (>= 2.7-1) | 2.7-11
libcomerr2          (>= 1.33-3) | 1.40.8-2
libkrb53        (>= 1.6.dfsg.2) | 1.6.dfsg.3-2
libssl0.9.8       (>= 0.9.8f-5) | 0.9.8g-10
libxml2             (>= 2.6.27) | 2.6.32.dfsg-2
zlib1g             (>= 1:1.1.4) | 1:1.2.3.3.dfsg-12



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to