I am continuing my effort to get exception handling working with an
external library. Here's a summary of current status. Any help is
welcome.
I have a restartless extension (.xpi file) that installs modutil, pcscd
and coolkey. The modutil utility is from the Fennec build, the other two
are external to the Mozilla build. The extension may need to be a
non-restartless extension ultimately but for now it is restartless. The
rough actions performed by the extension are as follows:
1) Copy binaries and a few library files to fennec/bin. I could not run
the binaries from the folder within the extension but execution from a
newly created bin folder works fine. The extension also sets up folders
and copies configuration files required by pcscd.
2) During installation the extension starts pcscd and uses modutil to
register an sdcard with the NSS store used by Fennec during the
installation. Exceptions are thrown and caught successfully during this
registration.
3) During browser start-up, the extension starts pcscd and adds the bin
folder to LD_LIBRARY_PATH.
4) When browsing to a page that requires TLS client authentication, the
browser loads the coolkey library which interacts with the pcscd service.
A PIN prompt is displayed then the application crashes when an exception
is thrown inside the coolkey library.
The exception is part of a throw/catch I added to libcoolkey to make sure
I always hit an exception until this is resolved. The libcoolkey library
is linked against gnustl_shared. The .so is installed by the extension.
I know this .so is loaded as the behavior when I move the .so file is
different (I am not prompted for a PIN and the browsers continues to an
error page displayed by the server). Initially I was using NDK n8e but
have also tried with n9.
I noticed the following warnings in logcat shortly before a crash:
E GeckoLinker:
/data/data/org.mozilla.fennec_cwallace/bin/libcoolkeypk11.so: Warning:
dynamic header type #f not handled
E GeckoLinker:
/data/data/org.mozilla.fennec_cwallace/bin/libcoolkeypk11.so: Warning:
unhandled flags #8 not handled
Several NSS libraries also generate the unhandled flags warning, but the
dynamic header type warning only appears for the library that is causing
the crash. Are these warnings problematic? It seems strange that
exceptions are thrown/caught when the library is loaded by modutil, but
not when loaded by the browser.
I have tried using gnustl and stlport in both static and shared forms.
When using stlport (static or shared), the coolkey library cannot be
loaded with the following error:
"Cannot load library: reloc_library[1310]: 5237 cannot locate
'_ZNSsD1Ev'
As above, I confirmed the shared version of stlport is being used by
moving the library and observing a different error. Unlike the gnustl
behavior, I am unable to load libcoolkey into modutil when it is linked
against stlport.
_______________________________________________
mobile-firefox-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/mobile-firefox-dev