summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSverker Eriksson <sverker@erlang.org>2012-08-23 18:46:59 +0200
committerSverker Eriksson <sverker@erlang.org>2012-08-23 18:46:59 +0200
commit9a9dee8bf12212830be738932c4cdb45f2db2260 (patch)
tree3cdf6f4bd99c28022741841995064d06d335277d /lib
parenta94308cb1e1aa727a126e99b5a8714490dd3de16 (diff)
parent439fe7b93743528782fbe1ff00dc65d08cb25a56 (diff)
downloaderlang-9a9dee8bf12212830be738932c4cdb45f2db2260.tar.gz
Merge branch 'sverk/hipelibs-code_server-crash-maint' into maint
* sverk/hipelibs-code_server-crash-maint: Fix init:restart with hipelibs kernel: Disable hipe compilation for hipe_unified_loader
Diffstat (limited to 'lib')
-rw-r--r--lib/kernel/src/heart.erl4
-rw-r--r--lib/kernel/src/hipe_unified_loader.erl7
-rw-r--r--lib/kernel/test/code_SUITE.erl3
3 files changed, 13 insertions, 1 deletions
diff --git a/lib/kernel/src/heart.erl b/lib/kernel/src/heart.erl
index 255ae4e51b..218be964a0 100644
--- a/lib/kernel/src/heart.erl
+++ b/lib/kernel/src/heart.erl
@@ -18,6 +18,10 @@
%%
-module(heart).
+-compile(no_native).
+% 'no_native' as part of a crude fix to make init:restart/0 work by clearing
+% all hipe inter-module information (hipe_mfa_info's in hipe_bif0.c).
+
%%%--------------------------------------------------------------------
%%% This is a rewrite of pre_heart from BS.3.
%%%
diff --git a/lib/kernel/src/hipe_unified_loader.erl b/lib/kernel/src/hipe_unified_loader.erl
index 8b3aa0286d..514c002d87 100644
--- a/lib/kernel/src/hipe_unified_loader.erl
+++ b/lib/kernel/src/hipe_unified_loader.erl
@@ -34,6 +34,13 @@
-module(hipe_unified_loader).
+-compile(no_native).
+% 'no_native' is a workaround to avoid "The code server called unloaded module"
+% caused by Mod:module_info(exports) in patch_to_emu_step1() called by post_beam_load.
+% Reproducable with hipelibs and asn1_SUITE.
+% I think the real solution would be to let BIF erlang:load_module/2 redirect all
+% hipe calls to the module and thereby remove post_beam_load.
+
-export([chunk_name/1,
%% Only the code and code_server modules may call the entries below!
load_native_code/2,
diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl
index 3e8bdaf1ff..827208b048 100644
--- a/lib/kernel/test/code_SUITE.erl
+++ b/lib/kernel/test/code_SUITE.erl
@@ -1550,7 +1550,8 @@ native_early_modules_1(Architecture) ->
true ->
?line true = lists:all(fun code:is_module_native/1,
[ets,file,filename,gb_sets,gb_trees,
- hipe_unified_loader,lists,os,packages]),
+ %%hipe_unified_loader, no_native as workaround
+ lists,os,packages]),
ok
end.