[PATCH] error_handler: add no_native compiler directive

Tuncer Ayaz <>
Mon Oct 4 22:23:28 CEST 2010


As suggested by Mikael Pettersson:
"I agree there _may_ be a recursion between the native-traps-to-beam
mechanism and the error_handler module. However, the real problem is
that the chosen mechanism (point to target MFA's BEAM code) isn't
flexible enough to handle newer features like on_load or (apparently)
a native-mode error_handler.

My planned fix is to make remote calls link to the target's Export*
instead, just like BEAM does, which should solve the problems. This
will however require HiPE to use different kinds of trap-to-beam stubs
for remote and local calls, since local calls must not and often
cannot go via Export entries.

A simpler workaround for the error_handler issue (which I couldn't
reproduce) is to just never compile error_handler to native code. It's
not like there's a lot to gain by doing that. Please try the patch
below."

Patch has been tested and confirmed to make --enable-native-libs
useable.

Signed-off-by: Mikael Pettersson <>
Acked-by: Tuncer Ayaz <>
---
 lib/kernel/src/error_handler.erl |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/lib/kernel/src/error_handler.erl b/lib/kernel/src/error_handler.erl
index 17dd02a..db35f41 100644
--- a/lib/kernel/src/error_handler.erl
+++ b/lib/kernel/src/error_handler.erl
@@ -17,6 +17,7 @@
 %% %CopyrightEnd%
 %%
 -module(error_handler).
+-compile(no_native).
 
 %% A simple error handler.
 


More information about the erlang-patches mailing list