RFR: Fix stacktraces
axel.siebenborn at sap.com
Wed Apr 4 14:42:10 UTC 2018
Currently, stacktraces are not working correctly in portola. The reason is a faulty implementation of dladdr.
Due to a missing comparison with the size, dladdr claims to have found a symbol for an address, whereas this is just the nearest exported symbol lower to that address. Pointing into a function with a non-exported symbol, returning NULL for dlinfo.dli_sname and dlinfo.dli_saddr would be the expected behavior.
The fix is not to use the faulty results of dladdr for dlinfo.dli_sname and dlinfo.dli_saddr and to go the slow path,
getting the file info using the Decoder class.
As most symbols in libjvm are not exported, this is the common case anyway.
I protected the code with #ifndef LIBMUSL. To get this define, I had to change CompileJvm.gmk.
More information about the portola-dev