From: Alexey N. <sn...@gm...> - 2007-03-15 07:18:59
|
Hello. I am currently continuing my development of gaim-based jabber transport (ea= rly=20 version is published on xmpppy.sf.net) and have come upon a problem. About my platform first: I use gnt version of beta6 as a base (actually onl= y=20 gaim_gnt_io_invoke), all UI effects are disabled. Running it on Debian Sarg= e=20 so use libglib2.0-0 version 2.6.4-1. I am experiencing lot of crashes, all of them seems to be in MSN code (but= =20 that may be just because transport is used mostly for msn) and all look lik= e=20 data somewhere lept out from the control and overwritten gaim's structures. Sometimes mess starts from gaim_gnt_io_invoke (that I was unable to remove = or=20 replace with my own one because of lack of GLib knowledge). It got called=20 with very weird 'condition' argument that is, believing to post-mortem core= =20 dump analysis, takes completely random values while it should persist in th= e=20 range 0-63. Sometimes condition takes sane value but later in stack things looks=20 overwritten nevertheless. (like account: 0xa which is obviously corrupt). I am asking for a little help with it - can anyone suggest how it may happe= n?=20 Can it be my bug? msn plugin bug? glib bug? where to start hunting from? Oh and there was another thing that I suppressed. When trying such setup I= =20 discovered a lot of HUP signals coming up to my python wrapper when I tryin= g=20 to execute g_main_context_iteration. So I put "try: except:" block around i= t=20 to just ignore them. May be it may have something to do with my problems to= o? Thanks in advance. Here is example of such crash: #0 0x400d0363 in strlen () from /lib/tls/libc.so.6 #1 0x4009f681 in vfprintf () from /lib/tls/libc.so.6 #2 0x400c0d96 in vasprintf () from /lib/tls/libc.so.6 #3 0x4091fc87 in g_vasprintf () from /usr/lib/libglib-2.0.so.0 #4 0x40910aa6 in g_strdup_vprintf () from /usr/lib/libglib-2.0.so.0 #5 0x40543292 in gaim_debug_vargs (level=3DGAIM_DEBUG_INFO, category=3D0x4= 066be59=20 "msn", format=3D0xbfffc854 "", args=3D0x636f4c30 <Address 0x636f4c30 out of bo= unds>)=20 at debug.c:59 #6 0x40543509 in gaim_debug_info (category=3D0x636f4c30 <Address 0x636f4c3= 0 out=20 of bounds>, format=3D0x0) at debug.c:124 #7 0x40666158 in xfr_error (cmdproc=3D0xb74eca8, trans=3D0x0, error=3D0) a= t=20 switchboard.c:1136 #8 0x40651b78 in msn_cmdproc_process_cmd (cmdproc=3D0xb74eca8, cmd=3D0x406= 660e0)=20 at cmdproc.c:281 #9 0x40651d43 in msn_cmdproc_process_cmd_text (cmdproc=3D0xb74eca8,=20 command=3D0xb924af4 "800 307") at cmdproc.c:335 #10 0x40660045 in read_cb (data=3D0xbbcccb8, source=3D21, cond=3DGAIM_INPUT= _READ) at=20 servconn.c:445 #11 0x404f077d in gaim_gnt_io_invoke (source=3D0x636f4c30, condition=3D1668= 238384,=20 data=3D0x9b260a0) at gntgaim.c:138 #12 0x4091fdbf in g_vasprintf () from /usr/lib/libglib-2.0.so.0 #13 0x408fa582 in g_main_depth () from /usr/lib/libglib-2.0.so.0 #14 0x408fb5f8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #15 0x408fb930 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #16 0x408fbb7d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #17 0x404f0c62 in pygaim__process (self=3D0x0, args=3D0x636f4c30) at=20 generated.c:198 #18 0x080fde6a in PyCFunction_Call () #19 0x080ab834 in PyEval_CallObjectWithKeywords () #20 0x080a9bee in Py_MakePendingCalls () #21 0x080aa77c in PyEval_EvalCodeEx () #22 0x080acf79 in PyEval_EvalCode () #23 0x080cc126 in PyImport_ExecCodeModuleEx () #24 0x080cef63 in PyImport_ExtendInittab () #25 0x080ccc6e in PyImport_ExecCodeModuleEx () #26 0x080cdb68 in PyImport_ImportModule () #27 0x080cd693 in PyImport_ImportModule () #28 0x080cf729 in PyImport_ExtendInittab () #29 0x080ce79c in PyImport_ImportModuleEx () #30 0x080a0d01 in _PyBuiltin_Init () #31 0x080fde6a in PyCFunction_Call () #32 0x0805b989 in PyObject_Call () #33 0x080ab5c7 in PyEval_CallObjectWithKeywords () #34 0x080a9977 in Py_MakePendingCalls () #35 0x080aa77c in PyEval_EvalCodeEx () #36 0x080acf79 in PyEval_EvalCode () #37 0x080d90db in PyRun_FileExFlags () #38 0x080d885f in PyRun_SimpleFileExFlags () #39 0x08054e95 in Py_Main () #40 0x080549eb in main () Here is several more examples. I have cut out all below gaim_gnt_io_invoke= =20 because it is identical #0 0x00000011 in ?? () #1 0x4065f715 in msn_servconn_destroy (servconn=3D0xa88ada0) at servconn.c= :74 #2 0x4065f9f6 in connect_cb (data=3D0xa88ada0, source=3D17, error_message= =3D0x0) at=20 servconn.c:181 #3 0x4055a1e2 in gaim_proxy_connect_data_connected (connect_data=3D0xae4bf= 50)=20 at proxy.c:372 #4 0x4055a2b8 in socket_ready_cb (data=3D0xae4bf50, source=3D128,=20 cond=3DGAIM_INPUT_WRITE) at proxy.c:421 #5 0x404f077d in gaim_gnt_io_invoke (source=3D0x11, condition=3D17,=20 data=3D0xa88ab10) at gntgaim.c:138 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D #0 0x400d033b in strlen () from /lib/tls/libc.so.6 #1 0x4009f681 in vfprintf () from /lib/tls/libc.so.6 #2 0x400c0d96 in vasprintf () from /lib/tls/libc.so.6 #3 0x4091fc87 in g_vasprintf () from /usr/lib/libglib-2.0.so.0 #4 0x40910aa6 in g_strdup_vprintf () from /usr/lib/libglib-2.0.so.0 #5 0x40543292 in gaim_debug_vargs (level=3DGAIM_DEBUG_INFO, category=3D0x4= 066be59=20 "msn", format=3D0xbfffc854 "", args=3D0x11 <Address 0x11 out of bounds>) at=20 debug.c:59 #6 0x40543509 in gaim_debug_info (category=3D0x11 <Address 0x11 out of bou= nds>,=20 format=3D0x0) at debug.c:124 #7 0x40666158 in xfr_error (cmdproc=3D0x9655fd0, trans=3D0x0, error=3D1) a= t=20 switchboard.c:1136 #8 0x40651b78 in msn_cmdproc_process_cmd (cmdproc=3D0x9655fd0, cmd=3D0x406= 660e0)=20 at cmdproc.c:281 #9 0x40651d43 in msn_cmdproc_process_cmd_text (cmdproc=3D0x9655fd0,=20 command=3D0x9d6f4ed "800 222") at cmdproc.c:335 #10 0x40660045 in read_cb (data=3D0x908cd00, source=3D51, cond=3DGAIM_INPUT= _READ) at=20 servconn.c:445 #11 0x404f077d in gaim_gnt_io_invoke (source=3D0x11, condition=3D17,=20 data=3D0x9965a38) at gntgaim.c:138 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D #0 0x4065fbdc in msn_servconn_disconnect (servconn=3D0x9aab270) at=20 servconn.c:262 #1 0x4065f71f in msn_servconn_destroy (servconn=3D0x9aab270) at servconn.c= :71 #2 0x4065f9f6 in connect_cb (data=3D0x9aab270, source=3D1, error_message= =3D0x0) at=20 servconn.c:181 #3 0x4055a1e2 in gaim_proxy_connect_data_connected (connect_data=3D0xcded2= 28)=20 at proxy.c:372 #4 0x4055a2b8 in socket_ready_cb (data=3D0xcded228, source=3D43,=20 cond=3DGAIM_INPUT_WRITE) at proxy.c:421 #5 0x404f077d in gaim_gnt_io_invoke (source=3D0x1, condition=3DG_IO_IN,=20 data=3D0xb53d2b8) at gntgaim.c:138 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D #0 0x40662adb in msn_slplink_destroy (slplink=3D0xde69b08) at slplink.c:105 #1 0x4066455a in msn_switchboard_destroy (swboard=3D0xdf4f030) at=20 switchboard.c:86 #2 0x406662c6 in msn_switchboard_close (swboard=3D0xdf4f030) at=20 switchboard.c:1178 #3 0x40664c3b in swboard_error_helper (swboard=3D0xdf4f030, reason=3D5, passport=3D0x40913150 "U\211=E5\213M\bV\017=BE1\205=F6t2A\017=B6\021\20= 4=D2t*\215v")=20 at switchboard.c:343 #4 0x40651b78 in msn_cmdproc_process_cmd (cmdproc=3D0xdb485f0, cmd=3D0x406= 660e0)=20 at cmdproc.c:281 #5 0x40651d43 in msn_cmdproc_process_cmd_text (cmdproc=3D0xdb485f0,=20 command=3D0xeefff38 "800 225") at cmdproc.c:335 #6 0x40660045 in read_cb (data=3D0xc8d41f8, source=3D184, cond=3DGAIM_INPU= T_READ)=20 at servconn.c:445 #7 0x404f077d in gaim_gnt_io_invoke (source=3D0xde69b08, condition=3D23321= 6776,=20 data=3D0xd2e8318) at gntgaim.c:138 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D =2D-=20 Respectfully Alexey Nezhdanov |