Bug #408

Assertion failure in SpiderMonkey

Added by Michael Troß over 1 year ago. Updated 7 months ago.

Status:Closed Start date:06/28/2010
Priority:(P1) Urgent Due date:
Assignee:Michael Troß % Done:

0%

Category:-
Target version:0.9.0-alpha3
Severity:Normal Target:
Story points-
Velocity based estimate-

Description

Assertion failure: !rt->gcRunning, at jsgc.c:1393

2010-06-27_21:02:17.71287 [2010-06-27 21:02:16][Debug] EventInterpreter: called.
2010-06-27_21:02:17.71657 [2010-06-27 21:02:16][Info] EventInterpreter: Done processing event 'openDoor'
2010-06-27_21:02:17.73206 p%9%e
2010-06-27_21:02:17.73566
2010-06-27_21:02:17.74217 got response
2010-06-27_21:02:17.74803 Assertion failure: !rt->gcRunning, at jsgc.c:1393
2010-06-27_21:02:17.75753 Aborted
2010-06-27_21:02:19.11813 compiled WITH_TESTS
2010-06-27_21:02:19.12329 running tests
2010-06-27_21:02:19.12853 Test setup error: test tree is empty
2010-06-27_21:02:19.14101 done running tests
2010-06-27_21:02:19.80294 [2010-06-27 21:02:19][Info] Setting property '/config/jslogdirectory' to '/var/log/dss'
2010-06-27_21:02:19.81678 [2010-06-27 21:02:19][Info] Loading config file /usr/share/dss/data/config.xml
2010-06-27_21:02:19.82155 [2010-06-27 21:02:19][Info] Loading config directory /usr/share/dss/data/config.d
2010-06-27_21:02:19.83668 [2010-06-27 21:02:19][Info] Loading config from /usr/share/dss/data/config.d/iphone.xml
2010-06-27_21:02:19.84129 [2010-06-27 21:02:19][Info] Loading config from /usr/share/dss/data/config.d/bitinterface.xml
2010-06-27_21:02:19.89173 [2010-06-27 21:02:19][Info] Setting property '/config/jslogdirectory' to '/var/log/dss'
2010-06-27_21:02:20.37295 [2010-06-27 21:02:19][Info] No logfile configured, logging to stdout
2010-06-27_21:02:20.37761 [2010-06-27 21:02:19][Info] DSS starting up....
2010-06-27_21:02:20.38194 [2010-06-27 21:02:19][Info] DSS v0.8.0-alpha3 (c5963a83348799d4e5fb0fb404163c500b2fe940) (jin@469)

Related issues

related to Bug #436: Assertions in SpiderMonkey caused by call-scene subscript... Closed 08/27/2010

Associated revisions

Revision 2f3d0ff6
Added by Patrick Stählin over 1 year ago

Reworked threading internals of JS bindings

- Each entry point into the ScriptContext needs a ScriptLock of
this context.
- Don't create JSRequests all over the place
- Use JS_SetContextThread on each entry-point (JSContextThread)
- Create local roots when allocating values
- Use reentrant-locks only with properties which need to be
reentrant.
- Fixed tests

Closes #408, #436
References #455

History

Updated by Miguel Rodriguez over 1 year ago

  • Status changed from New to Assigned
  • Assignee set to Patrick Stählin
  • Target version set to 0.9.0-alpha1

Updated by Miguel Rodriguez over 1 year ago

  • Priority changed from (P3) Normal to (P1) Urgent

Updated by Patrick Stählin over 1 year ago

  • Status changed from Assigned to Resolved
  • Assignee changed from Patrick Stählin to Michael Troß

Updated by Michael Troß over 1 year ago

  • Status changed from Resolved to Assigned
  • Assignee changed from Michael Troß to Patrick Stählin

Still present with 0.8.0:

2010-08-03_03:48:47.93463 ....Assertion failure: !rt->gcRunning, at jsgc.c:1393
DSS v0.8.0 (094cf4c2fe89461f96d0ca1bffe1e19aff8df19d)

Updated by Michael Troß over 1 year ago

  • Status changed from Assigned to Resolved
  • Assignee changed from Patrick Stählin to Michael Troß

resolved by http://gitorious.digitalstrom.org/dss/dss-mainline/merge_requests/143,
has to be verified with 0.9.0-alpha1

Updated by Michael Troß over 1 year ago

  • Status changed from Resolved to Assigned
  • Assignee changed from Michael Troß to Patrick Stählin

Bug is still present in

DSS v0.9.0-alpha1 (67669fa356fd44250ba56b814fe801363c5b8303)
Assertion failure: !rt->gcRunning, at jsgc.c:1393
Aborted

Updated by Miguel Rodriguez over 1 year ago

  • Target version changed from 0.9.0-alpha1 to 0.9.0-alpha3

Updated by Christoph Hofmann over 1 year ago

You can choose how fast the dSS crashes!

I use the following script (which simply does nothing):

root@dSS11-CH-Home:/usr/share/dss/data/subscriptions.d# cat subscriptions_test.xml


<subscriptions version="1">

&lt;subscription event-name="running" handler-name="javascript"&gt;
&lt;parameter&gt;
&lt;parameter name="filename"&gt;/usr/share/dss/data/scripts/test.js&lt;/parameter&gt;
&lt;/parameter&gt;
&lt;/subscription&gt;

</subscriptions>

root@dSS11-CH-Home:/usr/share/dss/data/scripts# cat test.js

function testListener(f) {
DS485.setCallback(testListener, 0xff, 2 * 1000);
return true;
}

keepContext();
DS485.setCallback(testListener, 0xff, 2 * 1000);

This script lets crash the dSS every 10 seconds. If testListener() returns false instead of true, the dSS crashes every 70 seconds. If return value is false and timeout is 10*1000 (instead of 2*1000), the dSS crashes only every 60-80 minutes.

Updated by Patrick Stählin over 1 year ago

If you are returning true the original handler won't be uninstalled and we'll end up with 2^n listeners after n timeouts, this crashes on my machine after seconds because we can't allocate any threads anymore. I don't think we'll fix that as the future of the DS485 interface is uncertain.

When returning false, I can't reproduce the error on my laptop.

Updated by Patrick Stählin over 1 year ago

This is most probably caused by a non-thread-safe build of SpiderMonkey. See #455 for details.

Updated by Patrick Stählin over 1 year ago

  • Status changed from Assigned to Resolved
  • Assignee changed from Patrick Stählin to Michael Troß

Updated by Michael Troß over 1 year ago

  • Status changed from Resolved to Closed

resolved in Alpha3

Also available in: Atom PDF