User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.7.10) Gecko/20050720 Firefox/1.0.6 Build Identifier: Thunderbird version 1.0.6 (20050720) Whenever pressing <Shift><F10> to bring up the contextmenu Reproducible: Always Steps to Reproduce: 1. Start Thunderbird 2. Press <Shift>+<F10> 3. Actual Results: Crash -> SYS3175 Expected Results: Pop up the context menu It crashes in nearly every TB Window. I found few exceptions, so far. The composer window is not affected on a) writing a new message b) forward a message This crash also happen within mail/news on Mozilla. Tested on: 1.7.10 1.8b (20050301) 1.4.3 (20040911) VACPP - POPUPLOG.OS2 ---------------------------------------------- 07-29-2005 14:06:23 SYS3175 PID 0052 TID 0001 Slot 009c D:\THUNDERBIRD\THUNDERBIRD.EXE c0000005 1d13ba62 P1=00000001 P2=00000000 P3=XXXXXXXX P4=XXXXXXXX EAX=00000000 EBX=00e14d00 ECX=000001f5 EDX=00000001 ESI=16796760 EDI=00e14d00 DS=0053 DSACC=f0f3 DSLIM=ffffffff ES=0053 ESACC=f0f3 ESLIM=ffffffff FS=150b FSACC=00f3 FSLIM=00000030 GS=0000 GSACC=**** GSLIM=******** CS:EIP=005b:1d13ba62 CSACC=f0df CSLIM=ffffffff SS:ESP=0053:0011f394 SSACC=f0f3 SSLIM=ffffffff EBP=0011f438 FLG=00012246 WDGTOS2.DLL 0001:0000ba62
do you have any extensions installed? Perhaps this is an OS/2-specific problem.
(In reply to comment #1) > do you have any extensions installed? Perhaps this is an OS/2-specific problem. No Extensions. It crashes only on OS/2. Tested on Warp 4.5 FP 4&5 and Warp Connect FP40. Linux and win32 versions are not affected.
Weird. I'll debug tonight.
I see it crashing in nsWindow::DispatchMouseEvent(unsigned, void*, void*) (crash address in current trunk builds is WDGTOS2.DLL 0001:0000bd82). [icsdebug for some reason puts me at the line http://lxr.mozilla.org/seamonkey/source/widget/src/os2/nsWindow.cpp#3519 and insists that mMouseListener is NULL despite the test against that. ] But a few printfs in DispatchMouseEvent tell me that an aEventType of 501==NS_CONTEXTMENU_KEY is that cause (which I would not have expected to end up in a method called DispatchMouseEvent). In line 3416 result = DispatchWindowEvent(&event); fails and despite this event.widget is NS_RELEASEd in line 3493. A patch like #endif //OS2TODO - NS_RELEASE(event.widget); + if (event.widget) + NS_RELEASE(event.widget); return result; } or a test of result gets rid of the crash.
heh, fwiw NS_IF_RELEASE(event.widget); would be the style to use
Created attachment 191177 [details] [diff] [review] Use NS_IF_RELEASE OK, this then gets rid of the immediate crash. But, 1) I see several other instances in nsWindow.cpp where neither return nor event.widget get checked before releasing event.widget -- most or all of them in common with the windows version, like the one at the very end of nsWindow::DispatchMouseEvent. And 2) this does not make the popup very useful because triggered by Shift-F10 it gets placed somewhere near the border of the screen and not over the window.
Windows fix checked in.