Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


On 22.06.2017 19:53, Noel Grandin wrote:
if we care about playing nicely with pre-existing signal handles
installed by the JVM, then surely the right answer is that we too should
implement signal-chaining.
i.e. when we install our signal handlers, we should store the address of
the previously installed handler (if any) and call that inside our
signal handler.

On 22.06.2017 18:23, Chris Sherlock wrote:
Pre-installed signal handlers (A) are supported by means of saving
existing signal handlers, for signals that are used by the VM, when
the VM is first created. Later, when any of these signals are raised
and found not to be targeted at the Java HotSpot VM, the
pre-installed
handlers are invoked. In other words, pre-installed handlers are
"chained" behind the VM handlers for these signals.

the key phrase here is "found not to be targeted at the Java HotSpot VM"
- the JVM knows from the address associated with the signal whether it's
an "expected" one that it can handle itself, or an unexpected one that
it can pass along the chain.

LO however has no idea which signals the JVM would "expect", and as far
as LO itself is concerned there are no "expected" SIGSEGVs, every one is
a crash.

as furthermore the signal handler functions don't have a return value, i
don't see how the chaining in that direction can ever work.

The signal-chaining facility also allows an application to link and
load a shared library libjsig.so before libc/libthread/libpthread.
This library ensures that calls such as signal(), sigset(),
andsigaction() are intercepted so that they do not actually replace
the Java HotSpot VM's signal handlers if the handlers conflict with
those already installed by the Java HotSpot VM (B). Instead, these

so effectively the only way this can work if we somehow locate and
LD_PRELOAD this libjsig.so somewhere before soffice.bin is invoked.

to me this does rather not sound like it would reduce the number of
hoops to jump through or make anything more reliable.


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.