Public bug reported:

Calls to JS_DefineFunctions do not work in 32bit builds, sometimes
leading to segmentation faults. Here is a sample backtrace from gdb
(when it segfaulted):

#0  0x4011c25b in strlen () from /lib/tls/i686/cmov/libc.so.6
#1  0x4082dd98 in JS_DefineFunction (cx=0x81f1eb0, obj=0x81f5830, name=0x1 
<Address 0x1 out of bounds>, 
    call=0x4082ee20 <js_generic_native_method_dispatcher>, nargs=99, attrs=211) 
at jsapi.c:3738
#2  0x4082ebb7 in JS_DefineFunctions (cx=0x81f1eb0, obj=0x81f5938, 
fs=0x4093852c) at jsapi.c:3708
#3  0x4092fb44 in MY_InitFunctions (cx=0x81f1eb0) at core.c:1081

Some more investigation has show that JS_DefineFunctions loops over the
array that it is passed and calls JS_DefineFunction. The first call to
JS_DefineFunction works just fine. It is the second call where the
problem occurs.

Specifically, it appears to be a bug in the way the JSFunctionSpec is
defined
(https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec)

When the following JSFunctionSpec is used, you get a segfault on the
32bit build (but not on the 64bit build):

static JSFunctionSpec global_funcs[] = {
    {"a", TestFunc, 1, 0, 1},
    {"b", TestFunc, 1, 0, 1},
    {NULL,NULL,0,0,0}
};

I have attached a small sample program the demonstrates this bug. It can be 
compiled with the following comand:
gcc -I/usr/include/mozjs -g -DXP_UNIX test.c -lmozjs -o test

** Affects: xulrunner-1.9 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
JS_DefineFunctions Does Not Work in 32bit Build (SegFaults)
https://bugs.launchpad.net/bugs/339331
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to