03aafb9cff
Motivation: It's important to unload all previous registered native methods when there is a failure during loading the native lib. Failing to do so may lead to an "invalid state" and so may segfault the JVM when trying to call a native method that was previous loaded. This was observed when two versions of netty-tcnative were on the classpath which had different requirements in terms of linking. Something like this was reported in he hs log: ``` Instructions: (pc=0x0000000116413bf0) 0x0000000116413bd0: [error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xb] Register to memory mapping: RAX=0x0000000116413bf0 is an unknown value RBX={method} {0x000000011422e708} 'aprMajorVersion' '()I' in 'io/netty/internal/tcnative/Library' RCX=0x000000000000000a is an unknown value RDX=0x000000000000000a is an unknown value ``` Modifications: - Unregister previous registered native methods on failure - Unregister previous registered native methods on on unload of the native lib Result: No more segfault caused by invalid state when loading of the native lib fails in between. In this case the user will receive an error now like: |
||
---|---|---|
.. | ||
src | ||
pom.xml | ||
README.md |
Native transport for Linux
See our wiki page.