Hi,

It seems that the problem is located exactly at ne_session.c:217, it is
to say:


static void progress_notifier(void *userdata, ne_session_status status,
                              const ne_session_status_info *info)
{
 ne_session *sess = userdata;

 if (status == ne_status_sending || status == ne_status_recving) {
  sess->progress_cb(sess->progress_ud,info->sr.progress,info->sr.total);
 }
}

When executing step by step and stopping just before the segfault,
printing the variable 'sess' seems to be impossible there although the
scope seems to allow it.

(gdb)
progress_notifier (userdata=0x8070ad8, status=ne_status_sending,
    info=0x8070ba0)
    at /neon27-0.28.2/src/ne_session.c:216
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) p sess
No symbol "sess" in current context.


Anyway, userdata can be used in place of sess:

(gdb) p userdata
$17 = (void *) 0x8070ad8
(gdb) disas 0x8070ad8
No function contains specified address.
(gdb) ptype userdata
type = void *
(gdb) p (ne_session*) userdata
$18 = (struct ne_session_s *) 0x8070ad8
(gdb) p ((ne_session*) userdata)->progress_cb
$19 = (ne_progress) 0x804b530 <site_sock_progress_cb>
(gdb) p ((ne_session*) userdata)->progress_ud
$20 = (void *) 0x0
(gdb) p ((ne_session*) userdata)
$21 = (struct ne_session_s *) 0x8070ad8

The progress function seems to be site_sock_progress_cb and the
progress_ud seems to be 0x0 (I don't know if it is meaningfull or not).

I checked also info and everything seemed ok.

I'll try to get further later. :)

Regards
-- 
Emmanuel Fleury

I liked things better when I didn't understand them.
  -- Calvin & Hobbes (Bill Waterson)



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

Reply via email to