Closed
Bug 762618
Opened 12 years ago
Closed 11 years ago
Some tests hang on "Internal Error: too much recursion" when built in certain environments
Categories
(Toolkit :: Add-ons Manager, defect)
Tracking
()
RESOLVED
FIXED
mozilla26
People
(Reporter: jcranmer, Assigned: Irving)
References
Details
Attachments
(2 files)
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review |
The actual test that fails the most reliably for me is toolkit/mozapps/extensions/test/test_startup.js, although the error is as follows:
*** ERROR addons.manager: Exception calling provider getAddonByID: InternalError: too much recursion
[the provider in this case is XPIProvider.jsm].
I did this by building thunderibrd with:
--enable-application=mail
--disable-debug --enable-optimization='g'
--enable-tests
--enable-chrome-format=flat
along with the second patch in bug 750364 (attachment 631064 [details] [diff] [review]).
Comment 1•12 years ago
|
||
I got the same problem with test_startup.js as well as test_install.js and I'm building Firefox with --disable-debug --disable-optimize.
Comment 2•12 years ago
|
||
Well, I'm rather stumped with this one...
(In reply to Christian Holler (:decoder) from comment #1)
> I got the same problem with test_startup.js as well as test_install.js and
> I'm building Firefox with --disable-debug --disable-optimize.
Also Linux?
Anything useful in the log?
Reporter | ||
Comment 3•12 years ago
|
||
I don't have a log of the file on hand, but <https://tbpl.mozilla.org/php/getParsedLog.php?id=14646484&tree=Try&full=1> is a tinderbox log of the failure (Linux x86-64).
Given that --enable-debug and --enable-optimize both work, I suspect that JS stacks are roomier in debug builds?
Reporter | ||
Comment 4•12 years ago
|
||
This is the full log I had:
TEST-INFO | (xpcshell/head.js) | test 1 pending
TEST-INFO | (xpcshell/head.js) | test 2 pending
*** LOG addons.manager: Application has been upgraded
*** LOG addons.xpi: startup
*** LOG addons.xpi: checkForChanges
*** LOG addons.xpi: No changes found
*** LOG addons.manager: shutdown
*** LOG addons.xpi: shutdown
*** LOG addons.xpi-utils: shutdown
*** LOG addons.xpi: startup
*** LOG addons.xpi: checkForChanges
*** LOG addons.xpi: No changes found
TEST-PASS | /tmp/code-coverage/mozilla/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js | [null : 29] 5 == 5
TEST-PASS | /tmp/code-coverage/mozilla/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js | [null : 32] 0 == 0
*** LOG addons.manager: shutdown
*** LOG addons.xpi: shutdown
*** LOG addons.xpi-utils: shutdown
*** LOG addons.xpi: startup
*** LOG addons.xpi: checkForChanges
*** LOG addons.xpi: No changes found
TEST-PASS | /tmp/code-coverage/mozilla/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js | [null : 45] 5 == 5
*** LOG addons.manager: shutdown
*** LOG addons.xpi: shutdown
*** LOG addons.xpi-utils: shutdown
*** LOG addons.xpi: startup
*** LOG addons.xpi: checkForChanges
*** LOG addons.xpi: No changes found
TEST-PASS | /tmp/code-coverage/mozilla/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js | [null : 55] 5 == 5
*** LOG addons.manager: shutdown
*** WARN addons.manager: Exception calling callback: InternalError: too much recursion
TEST-INFO | (xpcshell/head.js) | test 2 finished
TEST-INFO | (xpcshell/head.js) | running event loop
Comment 5•12 years ago
|
||
Bug 733709 attachment 656221 [details] is the first example of this happening in the real world.
Reporter | ||
Comment 6•12 years ago
|
||
The full stack trace is ~128 function calls deep:
formatLogMessage@resource://gre/modules/AddonLogging.jsm:27
AddonLogger.error@resource://gre/modules/AddonLogging.jsm:73
LogManager.getLogger/</aTarget[fname]@resource://gre/modules/AddonLogging.jsm:136
AMI_callProviders@resource://gre/modules/AddonManager.jsm:659
AMI_shutdown@resource://gre/modules/AddonManager.jsm:681
shutdownManager@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/head_addons.js:407
@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:56
safeCall@resource://gre/modules/AddonManager.jsm:78
AMI_getAddonsByTypes/<.noMoreObjects@resource://gre/modules/AddonManager.jsm:1752
AOC_callNext@resource://gre/modules/AddonManager.jsm:174
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
getAddonsByTypes_getVisibleAddons@resource://gre/modules/XPIProvider.jsm:3216
XPIDB_getVisibleAddons@resource://gre/modules/XPIProvider.jsm -> resource://gre/modules/XPIProviderUtils.js:1377
XPI_getAddonsByTypes@resource://gre/modules/XPIProvider.jsm:3215
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
PL_getAddonsByTypes@resource://gre/modules/PluginProvider.jsm:111
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
LightweightThemeManager.getAddonsByTypes@resource://gre/modules/LightweightThemeManager.jsm:378
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AsyncObjectCaller@resource://gre/modules/AddonManager.jsm:160
AMI_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:1751
AM_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:2253
run_test_3@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:54
@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:47
safeCall@resource://gre/modules/AddonManager.jsm:78
AMI_getAddonsByTypes/<.noMoreObjects@resource://gre/modules/AddonManager.jsm:1752
AOC_callNext@resource://gre/modules/AddonManager.jsm:174
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
getAddonsByTypes_getVisibleAddons@resource://gre/modules/XPIProvider.jsm:3216
XPIDB_getVisibleAddons@resource://gre/modules/XPIProvider.jsm -> resource://gre/modules/XPIProviderUtils.js:1377
XPI_getAddonsByTypes@resource://gre/modules/XPIProvider.jsm:3215
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
PL_getAddonsByTypes@resource://gre/modules/PluginProvider.jsm:111
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
LightweightThemeManager.getAddonsByTypes@resource://gre/modules/LightweightThemeManager.jsm:378
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AsyncObjectCaller@resource://gre/modules/AddonManager.jsm:160
AMI_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:1751
AM_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:2253
run_test_2@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:44
@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:34
safeCall@resource://gre/modules/AddonManager.jsm:78
AMI_getAddonsWithOperationsByTypes/<.noMoreObjects@resource://gre/modules/AddonManager.jsm:1811
AOC_callNext@resource://gre/modules/AddonManager.jsm:174
AMI_getAddonsWithOperationsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1806
getAddonsWithOpsByTypes_getVisibleAddonsWithPendingOps@resource://gre/modules/XPIProvider.jsm:3255
XPIDB_getVisibleAddonsWithPendingOperations@resource://gre/modules/XPIProvider.jsm -> resource://gre/modules/XPIProviderUtils.js:1455
XPI_getAddonsWithOperationsByTypes@resource://gre/modules/XPIProvider.jsm:3248
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsWithOperationsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1804
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsWithOperationsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1806
PL_getAddonsWithOperationsByTypes@resource://gre/modules/PluginProvider.jsm:123
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsWithOperationsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1804
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AOC_callNext@resource://gre/modules/AddonManager.jsm:182
AsyncObjectCaller@resource://gre/modules/AddonManager.jsm:160
AMI_getAddonsWithOperationsByTypes@resource://gre/modules/AddonManager.jsm:1810
AM_getAddonsWithOperationsByTypes@resource://gre/modules/AddonManager.jsm:2249
@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:31
safeCall@resource://gre/modules/AddonManager.jsm:78
AMI_getAddonsByTypes/<.noMoreObjects@resource://gre/modules/AddonManager.jsm:1752
AOC_callNext@resource://gre/modules/AddonManager.jsm:174
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
getAddonsByTypes_getVisibleAddons@resource://gre/modules/XPIProvider.jsm:3216
XPIDB_getVisibleAddons@resource://gre/modules/XPIProvider.jsm -> resource://gre/modules/XPIProviderUtils.js:1377
XPI_getAddonsByTypes@resource://gre/modules/XPIProvider.jsm:3215
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
PL_getAddonsByTypes@resource://gre/modules/PluginProvider.jsm:111
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
LightweightThemeManager.getAddonsByTypes@resource://gre/modules/LightweightThemeManager.jsm:378
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AsyncObjectCaller@resource://gre/modules/AddonManager.jsm:160
AMI_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:1751
AM_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:2253
run_test_1@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:28
@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:21
safeCall@resource://gre/modules/AddonManager.jsm:78
AMI_getAddonsByTypes/<.noMoreObjects@resource://gre/modules/AddonManager.jsm:1752
AOC_callNext@resource://gre/modules/AddonManager.jsm:174
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
PL_getAddonsByTypes@resource://gre/modules/PluginProvider.jsm:111
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
LightweightThemeManager.getAddonsByTypes@resource://gre/modules/LightweightThemeManager.jsm:378
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AMI_getAddonsByTypes/<.nextObject/<@resource://gre/modules/AddonManager.jsm:1747
getAddonsByTypes_getVisibleAddons@resource://gre/modules/XPIProvider.jsm:3216
XPIDB_getVisibleAddons@resource://gre/modules/XPIProvider.jsm -> resource://gre/modules/XPIProviderUtils.js:1377
XPI_getAddonsByTypes@resource://gre/modules/XPIProvider.jsm:3215
callProvider@resource://gre/modules/AddonManager.jsm:105
AMI_getAddonsByTypes/<.nextObject@resource://gre/modules/AddonManager.jsm:1745
AOC_callNext@resource://gre/modules/AddonManager.jsm:180
AsyncObjectCaller@resource://gre/modules/AddonManager.jsm:160
AMI_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:1751
AM_getAddonsByTypes@resource://gre/modules/AddonManager.jsm:2253
run_test@/src/branch/mozilla-coverage/obj-x86_64-unknown-linux-gnu/_tests/xpcshell/toolkit/mozapps/extensions/test/xpcshell/test_general.js:18
_execute_test@/src/branch/mozilla-coverage/testing/xpcshell/head.js:315
@-e:1
Assignee | ||
Comment 7•12 years ago
|
||
I'm tripping over this now, too. It's in the way of progress on bug 853388 (XPIDatabase sqlite=>JSON) because I can't get through the tests to see what I'm breaking.
Blocks: 853388
Assignee | ||
Comment 8•12 years ago
|
||
Changing gStackSize in nsJSEnvironment.cpp doesn't seem to make any difference (http://dxr.mozilla.org/mozilla-central/dom/base/nsJSEnvironment.cpp#l90); I get the same depth of JS stack when the exception is thrown even when gStackSize is 8x larger.
When I catch this in the debugger, the C++ stack is 940 calls deep. The condition it's failing on is JS_CHECK_RECURSION (http://dxr.mozilla.org/mozilla-central/js/src/jsfriendapi.h#l573) which uses the limit set by JS_SetNativeStackQuota (http://dxr.mozilla.org/mozilla-central/js/src/jsapi.cpp#l3011); I'm not sure where that value comes from in xpcshell.
At this point I'm going to have to disable this test in order to get other work done; let me know if you need me to reproduce the problem again.
The top few recursion loops on the C++ stack look like:
#0 0x0000000103f8530c in js_ReportOverRecursed(JSContext*) at /Users/ireid/tbird/mozilla-central/js/src/jscntxt.cpp:560
#1 0x00000001044c9a70 in CheckStackAndEnterMethodJIT(JSContext*, js::StackFrame*, void*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1091
#2 0x00000001044c9a10 in js::mjit::JaegerShot(JSContext*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1118
#3 0x00000001040a15f9 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2414
#4 0x000000010408efb5 in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:341
#5 0x00000001040a9a06 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:398
#6 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#7 0x0000000103ff2fd1 in js_fun_apply(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsfun.cpp:987
#8 0x00000001040a9822 in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:338
#9 0x00000001040a977d in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:384
#10 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#11 0x00000001040aa586 in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:431
#12 0x000000010416b2ae in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:485
#13 0x00000001042c5602 in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:487
#14 0x000000010417d5ed in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2629
#15 0x0000000104182b2e in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3197
#16 0x00000001040a954b in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:338
#17 0x00000001040a9488 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:377
#18 0x000000010409fdd4 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2357
#19 0x000000010408efb5 in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:341
#20 0x000000010460e7e1 in UncachedInlineCall(js::VMFrame&, js::InitialFrameFlags, void**, bool*, unsigned int) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/InvokeHelpers.cpp:396
#21 0x000000010460ed42 in js::mjit::stubs::UncachedCallHelper(js::VMFrame&, unsigned int, bool, js::mjit::stubs::UncachedCallResult&) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/InvokeHelpers.cpp:491
#22 0x00000001045d7c65 in js::mjit::CallCompiler::update() at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MonoIC.cpp:1276
#23 0x00000001045d4ce2 in js::mjit::ic::Call(js::VMFrame&, js::mjit::ic::CallICInfo*) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MonoIC.cpp:1359
#24 0x000000010cadd5b6 in 0x10cadd5b6 ()
#25 0x00000001044c96d7 in js::mjit::EnterMethodJIT(JSContext*, js::StackFrame*, void*, JS::Value*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1042
#26 0x00000001044c9bea in CheckStackAndEnterMethodJIT(JSContext*, js::StackFrame*, void*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1100
#27 0x00000001044c9a10 in js::mjit::JaegerShot(JSContext*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1118
#28 0x000000010408ef8b in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:338
#29 0x00000001040a9a06 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:398
#30 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#31 0x00000001040aa586 in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:431
#32 0x000000010416b2ae in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:485
#33 0x00000001042c5602 in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:487
#34 0x000000010417d5ed in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2629
#35 0x0000000104182b2e in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3197
#36 0x00000001040a954b in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:338
#37 0x00000001040a9488 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:377
#38 0x000000010409fdd4 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2357
#39 0x000000010408efb5 in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:341
#40 0x00000001040a9a06 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:398
#41 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#42 0x0000000103ff2fd1 in js_fun_apply(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsfun.cpp:987
#43 0x00000001040a9822 in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:338
#44 0x00000001040a977d in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:384
#45 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#46 0x00000001040aa586 in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:431
#47 0x000000010416b2ae in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:485
#48 0x00000001042c5602 in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:487
#49 0x000000010417d5ed in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2629
#50 0x0000000104182b2e in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3197
#51 0x00000001040a954b in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:338
#52 0x00000001040a9488 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:377
#53 0x000000010409fdd4 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2357
#54 0x000000010408efb5 in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:341
#55 0x000000010460e7e1 in UncachedInlineCall(js::VMFrame&, js::InitialFrameFlags, void**, bool*, unsigned int) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/InvokeHelpers.cpp:396
#56 0x000000010460ed42 in js::mjit::stubs::UncachedCallHelper(js::VMFrame&, unsigned int, bool, js::mjit::stubs::UncachedCallResult&) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/InvokeHelpers.cpp:491
#57 0x00000001045d7c65 in js::mjit::CallCompiler::update() at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MonoIC.cpp:1276
#58 0x00000001045d4ce2 in js::mjit::ic::Call(js::VMFrame&, js::mjit::ic::CallICInfo*) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MonoIC.cpp:1359
#59 0x000000010cadd5b6 in 0x10cadd5b6 ()
#60 0x00000001044c96d7 in js::mjit::EnterMethodJIT(JSContext*, js::StackFrame*, void*, JS::Value*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1042
#61 0x00000001044c9bea in CheckStackAndEnterMethodJIT(JSContext*, js::StackFrame*, void*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1100
#62 0x00000001044c9a10 in js::mjit::JaegerShot(JSContext*, bool) at /Users/ireid/tbird/mozilla-central/js/src/methodjit/MethodJIT.cpp:1118
#63 0x000000010408ef8b in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:338
#64 0x00000001040a9a06 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:398
#65 0x0000000103fb7743 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:135
#66 0x00000001040aa586 in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:431
#67 0x000000010416b2ae in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:485
#68 0x00000001042c5602 in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:487
#69 0x000000010417d5ed in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2629
#70 0x0000000104182b2e in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3197
Assignee | ||
Comment 9•12 years ago
|
||
In case anyone needs a workaround, I'm using this patch to temporarily disable the hanging test.
Assignee | ||
Comment 10•12 years ago
|
||
Based on conversation with mjrosenb on IRC, I tried changing the xpcshell test harness to *not* supply the "method jit" -m argument to xpcshell. I'm still seeing stack overflows, with a characteristic repeating pattern including passes through CrossCompartmentWrapper
#0 0x0000000103ebe6fc in js_ReportOverRecursed(JSContext*) at /Users/ireid/tbird/mozilla-central/js/src/jscntxt.cpp:543
#1 0x0000000103fe6581 in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:331
#2 0x0000000103fe654d in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:407
#3 0x0000000103fdca04 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2410
#4 0x0000000103fcb2ae in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:364
#5 0x0000000103fe67d6 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:421
#6 0x0000000103ef0773 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:134
#7 0x0000000103f2c7e1 in js_fun_apply(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsfun.cpp:1031
#8 0x0000000103fe65f2 in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:337
#9 0x0000000103fe654d in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:407
#10 0x0000000103fdca04 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2410
#11 0x0000000103fcb2ae in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:364
#12 0x0000000103fe67d6 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:421
#13 0x0000000103ef0773 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:134
#14 0x0000000103fe738b in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:454
#15 0x00000001040a98e5 in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:481
#16 0x0000000104206c0f in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:453
#17 0x00000001040bbc1a in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2613
#18 0x00000001040c1178 in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3177
#19 0x0000000103fe631b in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:337
#20 0x0000000103fe6258 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:400
#21 0x0000000103fdca04 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2410
#22 0x0000000103fcb2ae in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:364
#23 0x0000000103fe67d6 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:421
#24 0x0000000103ef0773 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:134
#25 0x0000000103f2c7e1 in js_fun_apply(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsfun.cpp:1031
#26 0x0000000103fe65f2 in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:337
#27 0x0000000103fe654d in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:407
#28 0x0000000103ef0773 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:134
#29 0x0000000103fe738b in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:454
#30 0x00000001040a98e5 in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:481
#31 0x0000000104206c0f in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:453
#32 0x00000001040bbc1a in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2613
#33 0x00000001040c1178 in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3177
#34 0x0000000103fe631b in js::CallJSNative(JSContext*, int (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [inlined] at /Users/ireid/tbird/mozilla-central/js/src/jscntxtinlines.h:337
#35 0x0000000103fe6258 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:400
#36 0x0000000103fdca04 in js::Interpret(JSContext*, js::StackFrame*, js::InterpMode, bool) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:2410
#37 0x0000000103fcb2ae in js::RunScript(JSContext*, js::StackFrame*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:364
#38 0x0000000103fe67d6 in js::InvokeKernel(JSContext*, JS::CallArgs, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:421
#39 0x0000000103ef0773 in js::Invoke(JSContext*, js::InvokeArgsGuard&, js::MaybeConstruct) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.h:134
#40 0x0000000103fe738b in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value*, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsinterp.cpp:454
#41 0x00000001040a98e5 in js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:481
#42 0x0000000104206c0f in js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jswrapper.cpp:453
#43 0x00000001040bbc1a in js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:2613
#44 0x00000001040c1178 in proxy_Call(JSContext*, unsigned int, JS::Value*) at /Users/ireid/tbird/mozilla-central/js/src/jsproxy.cpp:3177
Assignee | ||
Comment 11•12 years ago
|
||
I'm still not convinced that we don't need to fix the JS interpreter, but it's clear that the AddonManager is particularly stack-unfriendly when addon providers call back synchronously on their sometimes-async APIs.
I've been using this WIP patch to get through my test/debug cycle with fewer stack overflows. In the long run it should be replaced by something supported; at this point Promises or Async.jsm (https://mail.mozilla.org/pipermail/firefox-dev/2013-April/000268.html) seem like the most likely candidates.
Assignee | ||
Comment 12•11 years ago
|
||
As part of the work in Bug 853388, all the tests under toolkit/mozapps/extensions have been modified to shift work from callbacks onto later turns of the event loop, both to avoid many deadlock & correctness issues within the tests themselves, and to reduce stack use.
If we're not seeing similar failures in other tests, can we close this bug?
Flags: needinfo?(Pidgeot18)
Reporter | ||
Comment 13•11 years ago
|
||
I kicked off a run of my coverage builds and stopped seeing this bug there, so I'm going to call this fixed by bug 853388.
Status: NEW → RESOLVED
Closed: 11 years ago
Flags: needinfo?(Pidgeot18)
Resolution: --- → FIXED
Updated•11 years ago
|
Assignee: nobody → irving
Target Milestone: --- → mozilla26
You need to log in
before you can comment on or make changes to this bug.
Description
•