[
https://issues.apache.org/jira/browse/COUCHDB-982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adam Kocoloski updated COUCHDB-982:
-----------------------------------
Component/s: (was: Database Core)
JavaScript View Server
> [PATCH] couchdb won't work with debug version of spidermonkey
> -------------------------------------------------------------
>
> Key: COUCHDB-982
> URL: https://issues.apache.org/jira/browse/COUCHDB-982
> Project: CouchDB
> Issue Type: Bug
> Components: JavaScript View Server
> Affects Versions: 1.0.1
> Reporter: Petr Běhan
> Priority: Minor
>
> Steps to reproduce:
> 1) configure spidermonkey with --enable-debug --enable-threadsafe and compile
> it
> 2) make couchdb use it (in my case install it as system-wide library, or
> through LD_LIBRARY_PATH)
> 3) restart couchdb server
> 4) attempt to query any view via http
> Observed behaviour:
> View query returns nothing, server pegs all CPUs, top shows nothing (spawned
> children die too fast to register on top) and /var/log/couchdb/couch.log
> starts filling with lines similar to "[Wed, 08 Dec 2010 21:59:37 GMT] [error]
> [<0.205.0>] OS Process Error <0.1056.0> ::
> {os_process_error,{exit_status,134}}" at rate of about 70 errors per second
> (which itself is a separate bug in my opinion, it should attempt to call the
> child once, and if it fails, stop further attempts and notify client of
> http/500 error)
> Problem is in incorrect use of JS_DestroyContext call. JSAPI documentation
> says that the context being destroyed may or may not be inside active
> request. But it doesn't explicitly mention that the calling thread MUST be
> set as current for the context. In src/couchdb/priv/couch_js/main.c, the
> macro FINISH_REQUEST incorrectly calls JS_ClearContextThread, which is
> intended to TRANSFER the context to another thread instead. The
> JS_DestroyContext call then triggers spidermonkey assert.
> Since "JS_NewContext automatically associates the new context with the
> calling thread.", I think the thread stuff should be completely dropped from
> both SETUP_REQUEST and FINISH_REQUEST macros and let spidermonkey take care
> of itself (unless there are plans to add threads to couch_js in future).
> Following simple patch fixes couchdb on my system:
> --- src/couchdb/priv/couch_js/main.c.orig 2010-12-09 00:40:40.000000000
> +0100
> +++ src/couchdb/priv/couch_js/main.c 2010-12-09 01:03:34.000000000 +0100
> @@ -23,11 +23,9 @@
> #ifdef JS_THREADSAFE
> #define SETUP_REQUEST(cx) \
> - JS_SetContextThread(cx); \
> JS_BeginRequest(cx);
> #define FINISH_REQUEST(cx) \
> - JS_EndRequest(cx); \
> - JS_ClearContextThread(cx);
> + JS_EndRequest(cx);
> #else
> #define SETUP_REQUEST(cx)
> #define FINISH_REQUEST(cx)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira