Some time ago I posted that Agent crashes when sending an email. At this time the crash was sometimes quite frequently and sometimes it worked well for an extended period of time. Now I found a scenario which will cause this crash rather reliably (it failed only one time for me when I tested it).
Compose an article with a non-existent newsgroup., messagetext and subjectline doesn't matter I think, and then send this article with <ALT>-S (for Send-Now).
When the crash occurs ebx contains a pointer that is pointing to some invalid address (actually it is a string instead of a pointer) which is subsequently referenced. On each crash the pointer and it's content is the same.
I already run agent with "wine -debugmsg +all" and got a rather huge trace (about 500MB) so if you need any info I can extract it from this. I tried to anlyze the problem but I have problems interpreting the trace so it doesn't tell me much. I would investigate this myself but I need some input how the best way to approach this. winedbg is not much help to me for now. Or can you set memory access breakpoints like in Softice?
Backtrace: =>0 0x005b507b (agent.exe.@InitWndProc$qp6HWND__uiuil+0x202cd in D:\home\agent\agent.exe) (ebp=406b1cd8) 1 0x0046cd45 (agent.exe.@ENUMERATEACTIVEWNDS$QP6HWND__P9TENUMINFO+0x39175 in D:\home\agent\agent.exe) (ebp=406b1f60) 2 0x0040e1ba (agent.exe.__GetExceptDLLinfo+0xd14c in D:\home\agent\agent.exe) (ebp=406b1f74) 3 0x0058e5c3 (agent.exe.@WinTimerStatics@Func$qp6HWND__uiuiul+0xe35b in D:\home\agent\agent.exe) (ebp=406b1f88) 4 0x00531d64 (agent.exe.@MyDdeCallback$quiuip7HCONV__p5HSZ__t4p10HDDEDATA__ulul+0x17d5c in D:\home\agent\agent.exe) (ebp=406b1fd8) 5 0x004dacf4 (agent.exe.@PropdlgKbdProc$qiuil+0x261fc in D:\home\agent\agent.exe) (ebp=406b2024) 6 0x00598543 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x3795 in D:\home\agent\agent.exe) (ebp=406b207c) 7 0x005985a0 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x37f2 in D:\home\agent\agent.exe) (ebp=406b20b0) 8 0x0059865f (agent.exe.@InitWndProc$qp6HWND__uiuil+0x38b1 in D:\home\agent\agent.exe) (ebp=406b20f8) 9 0x005985c8 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x381a in D:\home\agent\agent.exe) (ebp=406b2110) 10 0x408141fb (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=406b2134) 11 0x4081429f (WINPROC_CallWndProc+0x8f(proc=0x416b1fb8, hwnd=0x10025, msg=0x411, wParam=0x100, lParam=0x4199cac8) [winproc.c:184] in user32.dll.so) (ebp=406b2164) 12 0x4081a6e8 (CallWindowProcA+0x88(func=0x413b0848, hwnd=0x10025, msg=0x411, wParam=0x100, lParam=0x4199cac8) [winproc.c:2854] in user32.dll.so) (ebp=406b218c) 13 0x407fc1da (DispatchMessageA+0x12a(msg=0x406b222c) [message.c:794] in user32.dll.so) (ebp=406b21d0) 14 0x407dc9f9 (MENU_TrackMenu+0x5e9(hmenu=0x0, wFlags=0x80000000, x=0x0, y=0x0, hwnd=0x10025, lprect=0x0) [menu.c:2891] in user32.dll.so) (ebp=406b2248) 15 0x407dce67 (MENU_TrackKbdMenuBar+0x147(hwnd=0x10025, wParam=0xf100, vkey=0x0) [menu.c:3049] in user32.dll.so) (ebp=406b2278) 16 0x40801266 (NC_HandleSysCommand+0x266(hwnd=0x10025, wParam=0xf100, lParam=0x0) [nonclient.c:2194] in user32.dll.so) (ebp=406b22a0) 17 0x407f0aee (DEFWND_DefWinProc+0x74e(hwnd=0x10025, msg=0x112, wParam=0xf100, lParam=0x0) [defwnd.c:534] in user32.dll.so) (ebp=406b2330) 18 0x407f1517 (DefWindowProcA+0x3a7(hwnd=0x10025, msg=0x112, wParam=0xf100, lParam=0x0) [defwnd.c:863] in user32.dll.so) (ebp=406b2364) 19 0x407f9daf (DefFrameProcA+0xff(hwnd=0x10025, hwndMDIClient=0x10026, message=0x112, wParam=0xf100, lParam=0x0) [mdi.c:1492] in user32.dll.so) (ebp=406b2388) 20 0x005a1dea (agent.exe.@InitWndProc$qp6HWND__uiuil+0xd03c in D:\home\agent\agent.exe) (ebp=406b23a4) 21 0x0059c206 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x7458 in D:\home\agent\agent.exe) (ebp=406b23c4) 22 0x00598556 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x37a8 in D:\home\agent\agent.exe) (ebp=406b241c) 23 0x005985a0 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x37f2 in D:\home\agent\agent.exe) (ebp=406b2450) 24 0x0059865f (agent.exe.@InitWndProc$qp6HWND__uiuil+0x38b1 in D:\home\agent\agent.exe) (ebp=406b2498) 25 0x005985c8 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x381a in D:\home\agent\agent.exe) (ebp=406b24b0) 26 0x408141fb (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=406b24d4) 27 0x4081429f (WINPROC_CallWndProc+0x8f(proc=0x416b1fb8, hwnd=0x10025, msg=0x112, wParam=0xf100, lParam=0x0) [winproc.c:184] in user32.dll.so) (ebp=406b2504) 28 0x4081a246 (WINPROC_CallProc32WTo32A+0xc6(func=0x416b1fb8, hwnd=0x10025, msg=0x112, wParam=0xf100, lParam=0x0) [winproc.c:2676] in user32.dll.so) (ebp=406b2530) 29 0x4081a7c8 (CallWindowProcW+0x88(func=0x413b0856, hwnd=0x10025, msg=0x112, wParam=0xf100, lParam=0x0) [winproc.c:2890] in user32.dll.so) (ebp=406b2558) 30 0x4082dc00 (call_window_proc+0xd0(hwnd=0x10025, msg=0x112, wparam=0xf100, lparam=0x0, unicode=0x1, same_thread=0x1) [message.c:1401] in user32.dll.so) (ebp=406b25a8) 31 0x4082e85f (SendMessageTimeoutW+0xdf(hwnd=0x10025, msg=0x112, wparam=0xf100, lparam=0x0, flags=0x0, timeout=0xffffffff, res_ptr=0x406b2630) [message.c:1791] in user32.dll.so) (ebp=406b2600) 32 0x4082eae9 (SendMessageW+0x39(hwnd=0x10025, msg=0x112, wparam=0xf100, lparam=0x0) [message.c:1873] in user32.dll.so) (ebp=406b2634) 33 0x407f0c03 (DEFWND_DefWinProc+0x863(hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [defwnd.c:571] in user32.dll.so) (ebp=406b26c8) 34 0x407f1517 (DefWindowProcA+0x3a7(hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [defwnd.c:863] in user32.dll.so) (ebp=406b26fc) 35 0x408141fb (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=406b2720) 36 0x4081429f (WINPROC_CallWndProc+0x8f(proc=0x407f1170, hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [winproc.c:184] in user32.dll.so) (ebp=406b2750) 37 0x4081a69b (CallWindowProcA+0x3b(func=0x407f1170, hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [winproc.c:2839] in user32.dll.so) (ebp=406b2778) 38 0x005982ed (agent.exe.@InitWndProc$qp6HWND__uiuil+0x353f in D:\home\agent\agent.exe) (ebp=406b279c) 39 0x00598556 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x37a8 in D:\home\agent\agent.exe) (ebp=406b27f4) 40 0x005985a0 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x37f2 in D:\home\agent\agent.exe) (ebp=406b2828) 41 0x0059865f (agent.exe.@InitWndProc$qp6HWND__uiuil+0x38b1 in D:\home\agent\agent.exe) (ebp=406b2870) 42 0x005985c8 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x381a in D:\home\agent\agent.exe) (ebp=406b2888) 43 0x408141fb (WINPROC_wrapper+0x17 in user32.dll.so) (ebp=406b28ac) 44 0x4081429f (WINPROC_CallWndProc+0x8f(proc=0x41998408, hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [winproc.c:184] in user32.dll.so) (ebp=406b28dc) 45 0x4081a6e8 (CallWindowProcA+0x88(func=0x413b0db8, hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [winproc.c:2854] in user32.dll.so) (ebp=406b2904) 46 0x407fc1da (DispatchMessageA+0x12a(msg=0x406b2980) [message.c:794] in user32.dll.so) (ebp=406b2948) 47 0x004db200 (agent.exe.@PropdlgKbdProc$qiuil+0x26708 in D:\home\agent\agent.exe) (ebp=406b299c) 48 0x004db4c3 (agent.exe.@PropdlgKbdProc$qiuil+0x269cb in D:\home\agent\agent.exe) (ebp=406b29ec) 49 0x004dadbb (agent.exe.@PropdlgKbdProc$qiuil+0x262c3 in D:\home\agent\agent.exe) (ebp=406b2a54) 50 0x0040fd3b (agent.exe.__GetExceptDLLinfo+0xeccd in D:\home\agent\agent.exe) (ebp=406b2e18) 51 0x005a54d4 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x10726 in D:\home\agent\agent.exe) (ebp=406b2e5c) 52 0x005b40b5 (agent.exe.@InitWndProc$qp6HWND__uiuil+0x1f307 in D:\home\agent\agent.exe) (ebp=406b2e8c)
Register dump: CS:0023 SS:002b DS:002b ES:002b FS:008f GS:005f EIP:005b507b ESP:406b1cb4 EBP:406b1cd8 EFLAGS:00210206( R- 00 I - -P1 ) EAX:2d746e65 EBX:4199cacc ECX:4199c268 EDX:406b1d48 ESI:00000000 EDI:4199cac8
On Fri, 23 May 2003 23:38:44 +0200, you wrote:
Compose an article with a non-existent newsgroup., messagetext and subjectline doesn't matter I think, and then send this article with <ALT>-S (for Send-Now).
I still cannot reproduce this.
How far does the sending come ? (if I follow the status line I see "looking up news.bla.bla", "connecting to news.bla.bla", "sending message" and "finished sending message")
When the crash occurs ebx contains a pointer that is pointing to some invalid address (actually it is a string instead of a pointer) which is subsequently referenced. On each crash the pointer and it's content is the same.
I already run agent with "wine -debugmsg +all" and got a rather huge trace (about 500MB) so if you need any info I can extract it from this. I tried to anlyze the problem but I have problems interpreting the trace so it doesn't tell me much.
A +relay,+winsock,+seh trace between the <ALT>S and the crash would be my starting point here. The seh: trace messages will show when the exception occurs.
Rein.
On Sat, 24 May 2003 07:52:17 +0200, Rein Klazes rklazes@xs4all.nl wrote:
I still cannot reproduce this.
How far does the sending come ? (if I follow the status line I see "looking up news.bla.bla", "connecting to news.bla.bla", "sending message" and "finished sending message")
It goes all the way trhought. But maybe this makes a difference. When the dialog appears that it couldn't sent the message, I immediately press space to dismiss the dialog. I noticed that it didn't always crash when I used the mouse instead. This scenario works for me almost every time (nine out of ten). Maybe it's the timing?
A +relay,+winsock,+seh trace between the <ALT>S and the crash would be my starting point here. The seh: trace messages will show when the exception occurs.
Can I grep this from the file? If these message are identifyable then it would be easier for me. Otherwise I'll try it with these.
On Sat, 24 May 2003 08:51:52 +0200, you wrote:
On Sat, 24 May 2003 07:52:17 +0200, Rein Klazes rklazes@xs4all.nl wrote:
I still cannot reproduce this.
How far does the sending come ? (if I follow the status line I see "looking up news.bla.bla", "connecting to news.bla.bla", "sending message" and "finished sending message")
It goes all the way trhought. But maybe this makes a difference. When the dialog appears that it couldn't sent the message, I immediately press space to dismiss the dialog. I noticed that it didn't always crash when I used the mouse instead. This scenario works for me almost every time (nine out of ten). Maybe it's the timing?
What dialog? I get after 10 seconds or so a dialog that asks me what to do with the message (try again, move to trash, remind me later and one or two others). Space does not work there.
A +relay,+winsock,+seh trace between the <ALT>S and the crash would be my starting point here. The seh: trace messages will show when the exception occurs.
Can I grep this from the file? If these message are identifyable then it would be easier for me. Otherwise I'll try it with these.
It is easier to try again. But may be winsock is not so helpfull, if it is the dialog that crashes.
Rein.
On Sat, 24 May 2003 11:18:32 +0200, Rein Klazes rklazes@xs4all.nl wrote:
What dialog? I get after 10 seconds or so a dialog that asks me what to do with the message (try again, move to trash, remind me later and one or two others). Space does not work there.
If you use a non-existing newsgroup and try to send it, you get first the online error notification dialog which has only one button. Only after that you get the the dialog asking what to do with the message.
It is easier to try again. But may be winsock is not so helpfull, if it is the dialog that crashes.
It certainly is not the dialog because this happens also quite frequently when sending normal email. I only managed to find this scenario which reproduces this crash reliably.
When sending with the "Send Now" button using the mouse instead of <ALT>-S this doesn't happen, though.
On Sat, 24 May 2003 14:37:39 +0200, you wrote:
On Sat, 24 May 2003 11:18:32 +0200, Rein Klazes rklazes@xs4all.nl wrote:
What dialog? I get after 10 seconds or so a dialog that asks me what to do with the message (try again, move to trash, remind me later and one or two others). Space does not work there.
If you use a non-existing newsgroup and try to send it, you get first the online error notification dialog which has only one button. Only after that you get the the dialog asking what to do with the message.
Got it. I had to disable the "continue after an online error occurs" option to get this notification box. Now if I do <ALT>S in this way:
depress ALT depress S release ALT release S
I get a similar crash. In the, for me more natural, way:
depress ALT depress S release S release ALT
no crash occurs.
It is easier to try again. But may be winsock is not so helpfull, if it is the dialog that crashes.
It certainly is not the dialog because this happens also quite frequently when sending normal email. I only managed to find this scenario which reproduces this crash reliably.
When sending with the "Send Now" button using the mouse instead of <ALT>-S this doesn't happen, though.
So it may have to do how you press ALT-S, and it just happens to be a send command. The backtrace seems to indicate that anyway.
Rein.
On Fri, 23 May 2003 23:38:44 +0200, you wrote:
45 0x4081a6e8 (CallWindowProcA+0x88(func=0x413b0db8, hwnd=0x1003e, msg=0x105, wParam=0x12, lParam=0xc0380001) [winproc.c:2854] in user32.dll.so) (ebp=406b2904) 46 0x407fc1da (DispatchMessageA+0x12a(msg=0x406b2980) [message.c:794] in user32.dll.so) (ebp=406b2948)
Agent dies when handling a WM_SYSKEYUP message for the release of the ALT key. I checked under real windows. There this message is not sent, but a WM_KEYUP message instead.
The attached patch corrects the behaviour to what I see under Windows.
Please give it a try.
Rein.
On Wed, 28 May 2003 12:06:45 +0200, Rein Klazes rklazes@xs4all.nl wrote:
Agent dies when handling a WM_SYSKEYUP message for the release of the ALT key. I checked under real windows. There this message is not sent, but a WM_KEYUP message instead.
The attached patch corrects the behaviour to what I see under Windows.
Please give it a try.
Thanks. It seems to work. I just tested my scenario and it didn't crash. I think this patch has another side effect that I reported earlier, but was not that much of a problem. Because when I use <ALT>-S for sending mails (which I always do) then the menu was always activated afterwards because it noticed the ALT key wich will activate the menu usually, but didn't release it. Thus I always had to press the ESC key after sending a mail to remove the state from the menu (I hope you know what I mean :) ). This appears to be also fixed with this.
On Wed, 28 May 2003 12:06:45 +0200, Rein Klazes rklazes@xs4all.nl wrote:
The attached patch corrects the behaviour to what I see under Windows.
Please give it a try.
Unfortunately I sent my previous mail to early. Agent just crashed again when sending email. I have to see if I can find a reliable scenario because it seems that at least the one with sending to a non-existing newsgroup now seems to work. I'll check that again as soon as I have more time.
On Wed, 28 May 2003 14:42:41 +0200, you wrote:
On Wed, 28 May 2003 12:06:45 +0200, Rein Klazes rklazes@xs4all.nl wrote:
The attached patch corrects the behaviour to what I see under Windows.
Please give it a try.
Unfortunately I sent my previous mail to early. Agent just crashed again when sending email. I have to see if I can find a reliable scenario because it seems that at least the one with sending to a non-existing newsgroup now seems to work. I'll check that again as soon as I have more time.
The backtrace should be different in this case. If you could post that.
Rein.
On Wed, 28 May 2003 12:06:45 +0200, Rein Klazes rklazes@xs4all.nl wrote:
Agent dies when handling a WM_SYSKEYUP message for the release of the ALT key. I checked under real windows. There this message is not sent, but a WM_KEYUP message instead.
The attached patch corrects the behaviour to what I see under Windows.
Please give it a try.
I don't know if I have only a bad run right now, but since I activated your patch now I have the crash always when sending a mail. From what you wrote, though, I don't think that the patch itself should do this, but it could be that there is some other bug as well, which causes this. But I can't say for sure. I had several weeks now, not a single crash, so that I thought that it is fixed already. On the other hands I had times when it crashed on every single mail, so this could be normal so far. :)
From what I managed to debug so far I noticed that some memory was
overwritten. I set a breakpoint in WINPROC_CallWindow and check the lParam wich was ok (msg = 0x411). but when it came to the crash after that breakpoint hte memory lParam was pointing to was overwritten with a string. Before that it contained two pointers. the first pointer is still intact, but the second one is overwritten with a string "ent-format". This string is of course interpreted as pointer and referenced as such. Maybe that helps you a bit.
On Wed, 28 May 2003 12:06:45 +0200, Rein Klazes rklazes@xs4all.nl wrote:
The attached patch corrects the behaviour to what I see under Windows.
What I forgot to mention in my previous post. The crash only occurs if you send the mail and that's it. Agent checks for incoming mails at that time. If there is a mail available and it is downloaded it doesn't crash and everything works fine.