From 1d5c2ce4e295562daddfe6ce8e470749f0d42542 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 21 Oct 2012 19:15:03 +0200 Subject: Replace error with PANIC for callbacks from JIT-compiled code. --- doc/ext_ffi_semantics.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'doc') diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html index f8da1e60..ab02f2b8 100644 --- a/doc/ext_ffi_semantics.html +++ b/doc/ext_ffi_semantics.html @@ -934,6 +934,22 @@ advisable in general. Do this only if you know the C function, that called the callback, copes with the forced stack unwinding and doesn't leak resources.

+

+One thing that's not allowed, is to let an FFI call into a C function +get JIT-compiled, which in turn calls a callback, calling into Lua again. +Usually this attempt is caught by the interpreter first and the +C function is blacklisted for compilation. +

+

+However, this heuristic may fail under specific circumstances: e.g. a +message polling function might not run Lua callbacks right away and the call +gets JIT-compiled. If it later happens to call back into Lua, you'll get a +VM PANIC with the message "bad callback". Then you'll need to +manually turn off JIT-compilation with +jit.off() for the +surrounding Lua function that invokes such a message polling function (or +similar). +

Callback resource handling

-- cgit v1.2.3-55-g6feb