[llvm-dev] JIT and atexit crash

Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Sun Nov 19 16:04:41 PST 2017


On Mon, Nov 20, 2017 at 12:22:49AM +0100, Alex Denisov via llvm-dev wrote:
> JIT allocates and maps some memory for the execution. Some function X at address 0xdeadbeef is part of this memory.
> JIT calls a code that passes the X to atexit.
> JIT deallocates and unmaps the memory used for execution (either via objectLayer.removeObjectSet or by calling JIT's destructors)
> atexit (cxa_finalize_ranges) calls the X at 0xdeadbeef which does not belong to 'us' anymore, which leads to the crash.

Sounds plausible.

> Given that my assumption is correct what can we do about this? Is there
> anything that can be done to cover this case inside of the Orc engine?

It's not the job of the Orc engine. Just don't use atexit.

Joerg


More information about the llvm-dev mailing list