Closed Bug 433858 Opened 16 years ago Closed 15 years ago

Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension [@ nsScriptableRegion::nsScriptableRegion][@ ... - nsMenuX::ObserveAttributeChanged]

Categories

(Core :: Widget: Cocoa, defect, P2)

PowerPC
macOS
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: Ludwig.Huegelschaefer, Assigned: jaas)

Details

(Keywords: crash, fixed1.9.1, Whiteboard: [tb3needs])

Crash Data

Attachments

(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9pre) Gecko/2008051304 Minefield/3.0pre
Build Identifier: Thunderbird nightly (3.0a2 right now)

Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension.

Reproducible: Always

Steps to Reproduce:
1. Install Enigmail nightly for TB trunk (http://www.hammernoch.net/mozilla/enigmail-trunk-tb-darwin-x86-ppc-trunk.xpi)
2. Restart Thunderbird.
3. Click on any one of the OpenPGP Menu items.
Actual Results:  
TB crashes. The following messages from TB appear in the console.log:

14.05.08 12:59:47 [0x0-0x34034].org.mozilla.thunderbird Warning: unrecognized command line flag -foreground 
14.05.08 13:00:49 [0x0-0x34034].org.mozilla.thunderbird Registering Enigmail account manager extension. 
14.05.08 13:00:49 [0x0-0x34034].org.mozilla.thunderbird Enigmail account manager extension registered. 
14.05.08 13:01:20 thunderbird-bin[335] *** Assertion failure in -[GeckoNSMenu insertItem:atIndex:], /SourceCache/AppKit/AppKit-949.27/Menus.subproj/NSMenu.m:616 
14.05.08 13:01:20 thunderbird-bin[335] Mozilla has caught an Obj-C exception [NSInternalInconsistencyException: Invalid parameter not satisfying: (index >= 0) && (index <= (_itemArray ? CFArrayGetCount((CFArrayRef)_itemArray) : 0))] 
14.05.08 13:01:20 [0x0-0x34034].org.mozilla.thunderbird 2008-05-14 13:01:20.181 thunderbird-bin[335:10b] *** Assertion failure in -[GeckoNSMenu insertItem:atIndex:], /SourceCache/AppKit/AppKit-949.27/Menus.subproj/NSMenu.m:616 
14.05.08 13:01:20 [0x0-0x34034].org.mozilla.thunderbird 2008-05-14 13:01:20.186 thunderbird-bin[335:10b] Mozilla has caught an Obj-C exception [NSInternalInconsistencyException: Invalid parameter not satisfying: (index >= 0) && (index <= (_itemArray ? CFArrayGetCount((CFArrayRef)_itemArray) : 0))] 


Expected Results:  
No crash. Enigmail should be working as normal.

TB trunk is running on OS X 10.5.2
Flags: blocking-thunderbird3.0a2?
Version: unspecified → Trunk
Please provide a breakpad report id with the details of this crash. For more info on breakpad please see here:

http://kb.mozillazine.org/Breakpad

Note this could be a problem with Enigmail and not Thunderbird. Until we see the crash stack it is hard to tell.
I've actually just tried this with Running Enigmail version 0.96a (20080515) on Mac OS X 10.5.2 with roughly today's build.

No crash.
Mark,

Is this what you're looking for?

http://crash-stats.mozilla.com/report/index/08f9fda3-2287-11dd-8d27-0013211cbf8a

http://kb.mozillazine.org/Breakpad is offline since I read your request.

> Is this what you're looking for?

Yes it is thanks. Unfortunately, its a bit of a pain because we've got no symbols for Mac crashes at the moment (bug 411171).

Any chance you could try with Shredder Alpha 1 (Thunderbird 3.0a1)? available from http://www.mozillamessaging.com/en-US/thunderbird/early_releases/

I know we have symbols with that one, and unless anyone else can reproduce it with a debug build, its going to be hard to debug.
Keywords: crash, qawanted
Frame  	Module  	Signature [Expand]  	Source
0 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
1 	thunderbird-bin 	NS_HexToRGB 	
2 	thunderbird-bin 	NS_HexToRGB 	
3 	thunderbird-bin 	NS_HexToRGB 	
4 	libxpcom_core.dylib 	_NS_InvokeByIndex_P 	
5 	thunderbird-bin 	MOZ_Z_inflateEnd 	
6 	thunderbird-bin 	MOZ_Z_inflateEnd 	
7 	libmozjs.dylib 	js_Invoke 	
8 	libmozjs.dylib 	JS_CompareValues 	
9 	libmozjs.dylib 	js_Invoke 	
10 	libmozjs.dylib 	js_Invoke 	
11 	libmozjs.dylib 	JS_CallFunctionValue 	
12 	thunderbird-bin 	NS_HexToRGB 	
13 	thunderbird-bin 	NS_HexToRGB 	
14 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
15 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
16 	thunderbird-bin 	NS_HexToRGB 	
17 	thunderbird-bin 	NS_HexToRGB 	
18 	thunderbird-bin 	NS_HexToRGB 	
19 	thunderbird-bin 	NS_HexToRGB 	
20 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
21 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
22 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
23 	HIToolbox 	DispatchEventToHandlers 	
24 	HIToolbox 	SendEventToEventTargetInternal 	
25 	HIToolbox 	SendEventToEventTargetWithOptions 	
26 	HIToolbox 	SendMenuOpening 	
27 	HIToolbox 	DrawTheMenu 	
28 	HIToolbox 	MenuChanged 	
29 	HIToolbox 	TrackMenuCommon 	
30 	HIToolbox 	MenuSelectCore 	
31 	HIToolbox 	_HandleMenuSelection2 	
32 	AppKit 	_NSHandleCarbonMenuEvent 	
33 	AppKit 	_DPSNextEvent 	
34 	AppKit 	-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] 	
35 	AppKit 	-[NSApplication run] 	
36 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
37 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
38 	thunderbird-bin 	XRE_main 	
39 	thunderbird-bin 	__darwin_gcc3_preregister_frame_info 	
40 	thunderbird-bin 	start 	
41 	thunderbird-bin 	start

There's 9 crashes of this type so far for 3.0a1. Looks like some of this is to do with the enigmail extension.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: qawantedhelpwanted
Summary: Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension. → Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension [@ nsScriptableRegion::nsScriptableRegion]
that stack is missing symbols....
it seems lack of symbols is known. ignore the stack trace comment 0 includes the interesting assertion which should be sufficient.
Assignee: nobody → joshmoz
Component: General → Widget: Cocoa
Flags: blocking-thunderbird3.0a2?
Product: Thunderbird → Core
QA Contact: general → cocoa
(In reply to comment #2)
> I've actually just tried this with Running Enigmail version 0.96a (20080515) on
> Mac OS X 10.5.2 with roughly today's build.
> 
> No crash.

Steps to reproduce:
1. Go to OpenPGP > Preferences and click on "Display expert settings".
2. Close the dialog and try to access the OpenPGP menu

I would nominate this for blocking-thunderbird3 except that flag doesn't seem to be available here.  Enigmail is a fairly popular extension, not to mention required if you want to use Thunderbird to participate in security bugs on Bugzilla in the near future, so it'd be a shame to ship with it broken.
Flags: blocking1.9.1?
Whiteboard: [tb3needs]
Since it's a long time from the original report I tested again. The bug is still reproducable. Details: http://crash-stats.mozilla.com/report/index/7e6a4db1-72b7-4e80-8612-4b21c2081203
still no symbols.

Signature	thunderbird-bin@0x8b51f0
UUID	7e6a4db1-72b7-4e80-8612-4b21c2081203
Time	2008-12-03 00:20:43-08
Uptime	138
Last Crash	10262346 seconds before submission
Product	Thunderbird
Version	3.0b2pre
Build ID	20081202110701
Branch	1.9.1
OS	Mac OS X
OS Version	10.5.5 9F33
CPU	ppc
CPU Info	
Crash Reason	EXC_BAD_ACCESS / KERN_PROTECTION_FAILURE
Crash Address	0x8b61f0
Comments	Clicking "OpenPGP" menu item provided by enigmail with enabled "Display Expert settings". See bug https://bugzilla.mozilla.org/show_bug.cgi?id=433858
Crashing Thread
Frame 	Module 	Signature [Expand] 	Source
0 	thunderbird-bin 	thunderbird-bin@0x8b51f0 	
1 	thunderbird-bin 	thunderbird-bin@0x8b62a4 	
2 	thunderbird-bin 	thunderbird-bin@0x7413f8 	
3 	thunderbird-bin 	thunderbird-bin@0x72c938 	
4 	thunderbird-bin 	thunderbird-bin@0x7113a8 	
5 	thunderbird-bin 	thunderbird-bin@0x53be54 	
6 	libmozjs.dylib 	js_Interpret 	js/src/jsinterp.cpp:5118
Adding gozer to the CC, as he can probably fill us in on the state of symbols in the crash-stats stuff...
until a certain bug is fixed, you must use a release to get Mac crash symbols - 3.0b1 will do.

here are two crashes with that top of stack fwiw.  

bp-e085b8d5-59fa-4f80-8c60-e50bc2081204
"crashed trying to uploade an excel spreadsheet of contacts"
thunderbird-bin	nsScriptableRegion::nsScriptableRegion	
thunderbird-bin	pixman_storeProcForPicture_accessors	
libxpcom_core.dylib	NS_InvokeByIndex_P	
libxpcom_core.dylib	NS_SetGlobalThreadObserver	
libxpcom_core.dylib	NS_SetGlobalThreadObserver	
libxpcom_core.dylib	NS_ProcessNextEvent_P	
thunderbird-bin	MOZ_Z_inflateEnd	
thunderbird-bin	nsScriptableRegion::nsScriptableRegion	
thunderbird-bin	nsScriptableRegion::nsScriptableRegion	
thunderbird-bin	NS_HexToRGB	
thunderbird-bin	NS_HexToRGB	
libxpcom_core.dylib	NS_InvokeByIndex_P	
thunderbird-bin	MOZ_Z_inflateEnd	
thunderbird-bin	MOZ_Z_inflateEnd	
libmozjs.dylib	js_Invoke	mozilla/js/src/jsinvoke.c:1297
libmozjs.dylib	js_Interpret	mozilla/js/src/jsinterp.c:4852
libmozjs.dylib	js_Invoke	mozilla/js/src/jsinvoke.c:1313
libmozjs.dylib	js_InternalInvoke	mozilla/js/src/jsinvoke.c:1369
libmozjs.dylib	JS_CallFunctionValue	mozilla/js/src/jslong.c:5054
thunderbird-bin	NS_HexToRGB	
thunderbird-bin	NS_HexToRGB	
thunderbird-bin	nsScriptableRegion::nsScriptableRegion	
thunderbird-bin	nsScriptableRegion::nsScriptableRegion	


bp-7df6aba2-1c83-41fa-9d12-a14942081204
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
libxpcom_core.dylib	NS_InvokeByIndex_P
thunderbird-bin	MOZ_Z_inflateEnd
thunderbird-bin	MOZ_Z_inflateEnd
libmozjs.dylib	js_Invoke
libmozjs.dylib	JS_CompareValues
libmozjs.dylib	js_Invoke
thunderbird-bin	MOZ_Z_inflateEnd
thunderbird-bin	MOZ_Z_adler32
libxpcom_core.dylib	NS_InvokeByIndex_P
libxpcom_core.dylib	NS_InvokeByIndex_P
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	nsScriptableRegion::nsScriptableRegion
thunderbird-bin	NS_HexToRGB
thunderbird-bin	NS_HexToRGB
Will a debug build provide the symbols wanted?
0  	thunderbird-bin  	nsPrintSession::Release  	
1 	thunderbird-bin 	nsPrintSession::Release 	
2 	thunderbird-bin 	NS_HexToRGB 	
3 	thunderbird-bin 	NS_HexToRGB 	
4 	thunderbird-bin 	NS_HexToRGB 	
5 	thunderbird-bin 	MOZ_Z_inflateEnd 	
6 	libmozjs.dylib 	js_Interpret 	js/src/jsinterp.cpp:5118
7 	libmozjs.dylib 	js_Invoke 	js/src/jsinvoke.cpp:1331
8 	libmozjs.dylib 	js_InternalInvoke 	js/src/jsinvoke.cpp:1388
9 	libmozjs.dylib 	JS_CallFunctionValue 	js/src/jsapi.cpp:5242
10 	thunderbird-bin 	NS_HexToRGB 	
11 	thunderbird-bin 	NS_HexToRGB 	
12 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
13 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
14 	thunderbird-bin 	NS_HexToRGB 	
15 	thunderbird-bin 	NS_HexToRGB 	
16 	thunderbird-bin 	NS_HexToRGB 	
17 	thunderbird-bin 	NS_HexToRGB 	
18 	thunderbird-bin 	nsPrintSession::Release 	
19 	thunderbird-bin 	nsPrintSession::Release 	
20 	thunderbird-bin 	nsPrintSession::Release 	
21 	HIToolbox 	HIToolbox@0x7e28 	
22 	HIToolbox 	HIToolbox@0x6fc0 	
23 	HIToolbox 	HIToolbox@0x6ddc 	
24 	HIToolbox 	HIToolbox@0x6277c 	
25 	HIToolbox 	HIToolbox@0x622b4 	
26 	HIToolbox 	HIToolbox@0x62048 	
27 	HIToolbox 	HIToolbox@0x61100 	
28 	HIToolbox 	HIToolbox@0x5c934 	
29 	HIToolbox 	HIToolbox@0x5c49c 	
30 	AppKit 	AppKit@0xc67b4 	
31 	AppKit 	AppKit@0x3c2fc 	
32 	AppKit 	AppKit@0x3b7d0 	
33 	AppKit 	AppKit@0x3548c 	
34 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
35 	thunderbird-bin 	nsScriptableRegion::nsScriptableRegion 	
36 	thunderbird-bin 	XRE_main 	
37 	thunderbird-bin 	__darwin_gcc3_preregister_frame_info 	
38 	thunderbird-bin 	start 	
39 	thunderbird-bin 	start
those builds aren't useful, yes please use a debug build --disable-strip

you can use either of:
--enable-debug
or
--enable-debugger-info-modules
is bp-4dc4c02f-be94-4eb0-9544-980db2081205 a variation?  nsScriptableRegion is second in stack, and is Mac-only crasher.

nsCOMPtr_base::~nsCOMPtr_base
nsScriptableRegion::nsScriptableRegion
nsScriptableRegion::nsScriptableRegion
nsScriptableRegion::nsScriptableRegion
nsScriptableRegion::nsScriptableRegion
NS_NewGenericFactory
NS_GetComponentRegistrar_P
PL_DHashTableFinish
NS_GetComponentRegistrar_P
NS_ShutdownXPCOM_P
XRE_CreateAppData
XRE_main
__darwin_gcc3_preregister_frame_info
start
Have built Shredder and enigmail with

ac_add_options --enable-debug

Result:
 
Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.1b3pre)
Gecko/20081206 Shredder/3.0b2pre

(Source checkout was on 2008-12-04)


09.12.08 08:16:47 thunderbird-bin[294] Stack trace:
Looking up symbols in process 294 named:  thunderbird-bin


__raiseError (in CoreFoundation) + 80
objc_exception_throw (in libobjc.A.dylib) + 72
+[NSException raise:format:] (in CoreFoundation) + 0
-[NSAssertionHandler
handleFailureInMethod:object:file:lineNumber:description:] (in
Foundation) + 120
-[NSMenu insertItem:atIndex:] (in AppKit) + 196
nsMenuX::ObserveAttributeChanged(nsIDocument*, nsIContent*, nsIAtom*)
(in libwidget_mac.dylib) (nsMenuX.mm:816)
nsNodeUtils::AttributeChanged(nsIContent*, int, nsIAtom*, int, unsigned
int) (in libgklayout.dylib) (nsNodeUtils.cpp:108)
nsXULElement::UnsetAttr(int, nsIAtom*, int) (in libgklayout.dylib)
(nsXULElement.cpp:1374)
nsGenericElement::RemoveAttribute(nsAString_internal const&) (in
libgklayout.dylib) (nsAttrName.h:236)
nsIDOMElement_RemoveAttribute(JSContext*, unsigned int, long*) (in
libxpconnect.dylib) (dom_quickstubs.cpp:2001)
js_Interpret (in libmozjs.dylib) (jsinterp.cpp:5127)
js_Invoke (in libmozjs.dylib) (jsinterp.cpp:1331)
js_InternalInvoke (in libmozjs.dylib) (jsinterp.cpp:1389)
JS_CallFunctionValue (in libmozjs.dylib) (jsapi.cpp:5243)
nsJSContext::CallEventHandler(nsISupports*, void*, void*, nsIArray*,
nsIVariant**) (in libgklayout.dylib) (nsJSEnvironment.cpp:1981)
nsJSEventListener::HandleEvent(nsIDOMEvent*) (in libgklayout.dylib)
(nsCOMPtr.h:777)
nsEventListenerManager::HandleEventSubType(nsListenerStruct*,
nsIDOMEventListener*, nsIDOMEvent*, nsPIDOMEventTarget*, unsigned int)
(in libgklayout.dylib) (nsEventListenerManager.cpp:1091)
nsEventListenerManager::HandleEvent(nsPresContext*, nsEvent*,
nsIDOMEvent**, nsPIDOMEventTarget*, unsigned int, nsEventStatus*) (in
libgklayout.dylib) (nsAutoPtr.h:955)
nsEventTargetChainItem::HandleEvent(nsEventChainPostVisitor&, unsigned
int, int) (in libgklayout.dylib) (nsCOMPtr.h:975)
nsEventTargetChainItem::HandleEventTargetChain(nsEventChainPostVisitor&,
unsigned int, nsDispatchingCallback*, int) (in libgklayout.dylib)
(nsEventDispatcher.cpp:302)
nsEventDispatcher::Dispatch(nsISupports*, nsPresContext*, nsEvent*,
nsIDOMEvent*, nsEventStatus*, nsDispatchingCallback*) (in
libgklayout.dylib) (nsEventDispatcher.cpp:518)
nsEventDispatcher::DispatchDOMEvent(nsISupports*, nsEvent*,
nsIDOMEvent*, nsPresContext*, nsEventStatus*) (in libgklayout.dylib)
(nsEventDispatcher.cpp:580)
nsMenuX::OnOpen() (in libwidget_mac.dylib) (nsMenuX.mm:574)
nsMenuX::MenuOpened(nsMenuEvent const&) (in libwidget_mac.dylib)
(nsMenuX.mm:332)
MyMenuEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*)
(in libwidget_mac.dylib) (nsMenuX.mm:916)
DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*,
HandlerCallRec*) (in HIToolbox) + 1488
SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*,
HandlerCallRec*) (in HIToolbox) + 468
SendEventToEventTargetWithOptions (in HIToolbox) + 56
SendMenuOpening(MenuSelectData*, MenuData*, double, unsigned long,
__CFDictionary*, unsigned char, unsigned char*) (in HIToolbox) + 456
DrawTheMenu(MenuSelectData*, __CFArray**, unsigned char, unsigned char*)
(in HIToolbox) + 252
MenuChanged(MenuSelectData*, unsigned char, unsigned char) (in
HIToolbox) + 528
TrackMenuCommon(MenuSelectData&, unsigned char*) (in HIToolbox) + 1296
MenuSelectCore(MenuData*, Point, double, unsigned long, OpaqueMenuRef**,
unsigned short*) (in HIToolbox) + 232
_HandleMenuSelection2 (in HIToolbox) + 392
_NSHandleCarbonMenuEvent (in AppKit) + 192
_DPSNextEvent (in AppKit) + 1852
-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (in
AppKit) + 116
-[NSApplication run] (in AppKit) + 740
nsAppShell::Run() (in libwidget_mac.dylib) (nsAppShell.mm:692)
nsAppStartup::Run() (in libtoolkitcomps.dylib) (nsAppStartup.cpp:193)
XRE_main (in XUL) (nsAppRunner.cpp:3266)
main (in thunderbird-bin) (nsMailApp.cpp:103)
_start (in thunderbird-bin) + 760
start (in thunderbird-bin) + 48


Hope that helps!
Summary: Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension [@ nsScriptableRegion::nsScriptableRegion] → Thunderbird crashes after selecting any of the OpenPGP menu items provided by Enigmail extension [@ nsScriptableRegion::nsScriptableRegion][@ ... - nsMenuX::ObserveAttributeChanged]
Throwing native menu items into our menus is definitely not supported by our native menu impl, which is completely DOM-based. Unfortunately it'll take some time to think out how we might allow for that, and any fix would almost certainly be high-risk, so blocking1.9.1-.

To confirm my hypothesis, can someone post a screenshot of the menu items provided by the Enigmail extension, including enough context to see what menu they are in?
Flags: blocking1.9.1? → blocking1.9.1-
Here is a screenshot of the OpenPGP menu provided by enigmail in standard view. This is possible to show with Shredder.

http://www.hammernoch.net/mozilla/Shredder_OpenPGP_menu_standard.jpg

If the enigmail preferences are set to show the extended view by checking "Display expert Settings", then Shredder crashes, as said. However, it's possible to show the extended view with enigmail extension in Thunderbird 2.0.0.18.

http://www.hammernoch.net/mozilla/Thunderbird2_OpenPGP_menu_extended.jpg
josh, afaict that stuff comes from this:
http://mxr-test.konigsberg.mozilla.org/addons/source/71/chrome/content/enigmail/enigmailMessengerOverlay.xul?mark=215-283#200

the advanced mode seems to be controlled by this:
http://mxr-test.konigsberg.mozilla.org/addons/source/71/chrome/content/enigmail/enigmailCommon.js?mark=1827-1828,1835-1836#1819

or some fairly similar variant. note that mxr-stage/mxr do not have addons available, so you'll need to be whitelisted.
Haven't seen this mentioned in the comments above, but this crash does not occur if the menu item is selected when a "compose message" window is open.
timeless: can you add the folks on this bug to the whitelist for konigsberg?

Patrik: What's the motivation for adding native menu items rather than just using normal DOM XUL stuff?
I'm not aware that I'm using native menu items. I'm creating the menu using the XUL overlay below -- isn't that a normal XUL menu?

  <menubar id="mail-menubar">
    <menu id="menu_Enigmail"
          label="&enigmail.openpgp.label;"
          accesskey="&enigmail.messengermenu.accesskey;"
          insertbefore="tasksMenu">

      <menupopup id="menu_EnigmailPopup"
        onpopupshowing="EnigCollapseAdvanced(this, 'hidden', enigUpdateOptionsDisplay());">
   ....


EnigCollapseAdvanced() the following (I think simple) JavaScript function that does what I consider normal DOM functionality:

function EnigCollapseAdvanced(obj, attribute, dummy) {
  DEBUG_LOG("enigmailCommon.js: EnigCollapseAdvanced: test\n");

  var advancedUser = EnigGetPref("advancedUser");

  var obj = obj.firstChild;
  while (obj) {
    if (obj.getAttribute("advanced") == "true") {
      if (advancedUser) {
        obj.removeAttribute(attribute);
      }
      else {
        obj.setAttribute(attribute, "true");
      }
    }
    else if (obj.getAttribute("advanced") == "reverse") {
      if (advancedUser) {
        obj.setAttribute(attribute, "true");
      }
      else {
        obj.removeAttribute(attribute);
      }
    }

    obj = obj.nextSibling;
  }
}
sorry. i should have been clearer. afaict josh was totally wrong on that point.
Yup - I guessed that enigmail was putting native menu items in the menus and that apparently isn't true. I'll check this out again.
Renominating then, since this was minused based on a misconception (comment 23).
Flags: blocking1.9.1- → blocking1.9.1?
Flags: blocking1.9.1? → blocking1.9.1+
I built Shredder from comm-central and installed the trunk enigmail extension. All the OpenPGP menu items work fine for me, no crash on Mac OS X 10.5.

I need better repro steps. Is this crash perhaps 10.4 only? Does this crash only happen in Gecko 1.9.0-based builds and not Gecko 1.9.1? Do I have to have keys set up? Do I need an encrypted message or something like that?
I implemented a workaround which seems to be mostly (but apparently not always) fine: originally, the menu had some elements with hidden="true"; these were unhidden if the user enables the "Expert Settings" in the preferences window. A while ago (since the bug was minused) I changed the behavior to have no hidden menu entries at start and to hide the nessessary elements in EnigCollapseAdvanced(). I can easily revert the change to get a better reproducability again.
Can you post a zipped xpi file that uses the old behavior so I can reproduce?
Can't post it here, as it exceeds the size limit for non-patch files. You can download it here:

http://www.hammernoch.net/mozilla/enigmail-trunk-tb-darwin-x86-ppc-trunk_special.xpi

I have reverted enigmailMessengerOverlay.xul, so that Shredder crashes reproducibly when "Display Expert Settings" is enabled and OpenPGP menu is clicked. Other functions work as expected. It will work again, when "Display expert settings" is disabled again by changing

user_pref("extensions.enigmail.advancedUser", true);

from true to false in prefs.js.

HTH
Attached patch fix v1.0 (obsolete) — Splinter Review
Thanks for the xpi Ludwig. This fixes the problem, bad assumption about attribute change notifications.
Attachment #357020 - Flags: review?(mstange)
Attachment #357020 - Flags: review?(mstange)
Comment on attachment 357020 [details] [diff] [review]
fix v1.0

Hold off on review while I look into something.
Attached patch fix v1.1Splinter Review
This is a better fix, it allows the DOM to update the hidden state on a bunch of items and send notifications in any order, we'll update items in the correct order without crashing.
Attachment #357020 - Attachment is obsolete: true
Attachment #357824 - Flags: review?(mstange)
Priority: -- → P2
Attachment #357824 - Flags: review?(mstange) → review+
Attachment #357824 - Flags: superreview?(roc)
Attachment #357824 - Flags: superreview?(roc) → superreview+
pushed to mozilla-central

http://hg.mozilla.org/mozilla-central/rev/3a19996dfa53
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Attachment #357824 - Flags: approval1.9.1?
Attachment #357824 - Flags: approval1.9.1? → approval1.9.1+
pushed to mozilla-1.9.1

http://hg.mozilla.org/releases/mozilla-1.9.1/rev/36698047953c
Keywords: fixed1.9.1
Josh, is this this code untestable or is there a reason you didn't checkin a test for it? Seems like something we'd want tested well...
Flags: in-testsuite?
The patch contains a test, it's in widget/tests/native_menus_window.xul.
Flags: in-testsuite? → in-testsuite+
Ah, missed that. Thanks.
Crash Signature: [@ nsScriptableRegion::nsScriptableRegion] [@ ... - nsMenuX::ObserveAttributeChanged]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: