On Tue, Oct 11, 2016 at 1:03 AM, Mike Hommey <m...@glandium.org> wrote:
> On Mon, Oct 10, 2016 at 06:24:33PM +0300, Henri Sivonen wrote:
>> For benchmarking purposes, I'd like to call uconv from a Rust program.
>> Since building uconv separately from Gecko hasn't really been
>> maintained, I figured that I'd export a small number of C-linkage
>> functions from libxul, dynamically link with libxul as built as part
>> of Linux x86_64 Firefox and call NS_InitMinimalXPCOM() once before
>> calling my exported test functions.
>>
>> I can get Cargo to link my Rust program with libxul, but upon running
>> the program, it crashes immediately with "signal: 11, SIGSEGV: invalid
>> memory reference" even if I don't even try to call into libxul at all.
>
> What is the stack trace for that crash?

Sorry, I mistaked Cargo not dumping one as one not being dumpable.
Here's the stack when bypassing Cargo:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00007ffff3ca658b in
stagefright::List<stagefright::AString>::prep() [clone .isra.34] ()
from ./firefox/libxul.so
#2  0x00007ffff3ca723e in stagefright::AAtomizer::AAtomizer() () from
./firefox/libxul.so
#3  0x00007ffff3c8a69e in
_GLOBAL__sub_I_Unified_cpp_media_libstagefright1.cpp () from
./firefox/libxul.so
#4  0x00007ffff7de74ea in call_init (l=<optimized out>,
argc=argc@entry=2, argv=argv@entry=0x7fffffffdd58,
env=env@entry=0x7fffffffdd70) at dl-init.c:72
#5  0x00007ffff7de75fb in call_init (env=0x7fffffffdd70,
argv=0x7fffffffdd58, argc=2, l=<optimized out>) at dl-init.c:30
#6  _dl_init (main_map=0x7ffff7ffe168, argc=2, argv=0x7fffffffdd58,
env=0x7fffffffdd70) at dl-init.c:120
#7  0x00007ffff7dd7cfa in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#8  0x0000000000000002 in ?? ()
#9  0x00007fffffffe11a in ?? ()
#10 0x00007fffffffe16b in ?? ()
#11 0x0000000000000000 in ?? ()

https://dxr.mozilla.org/mozilla-central/source/media/libstagefright/system/core/include/utils/List.h#293
shows C++ "new".

>> Is there some easily-addressable obvious reason for the process dying
>> due to just dynamically linking with libxul without even calling into
>> it? Related to jemalloc and/or static initializers maybe? (I'm
>> expecting that if this was about duplicate symbols due to two copies
>> of the Rust standard library or jemalloc, the linker would barf, but
>> I'm not sure if that's a correct expectation.)
>
> Build libxul with jemalloc disabled for starters.

OK. Thanks, but the backtrace is the same with jemalloc disabled.

> That being said, ISTR
> there are or used to be uconv standalone tests that didn't require
> linking libxul, so you could also try to link uconv + xpcom.

It seems that these got commented out
https://dxr.mozilla.org/mozilla-central/source/intl/uconv/tests/moz.build#9
as incompatible with libxul. If I commented out those bits, what would
I do to request a non-libxul build of just that stuff?

-- 
Henri Sivonen
hsivo...@hsivonen.fi
https://hsivonen.fi/
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to