Problems with threaded Erlang on Linux at UltraSparc III

Sergei Golovan <>
Wed Jul 15 14:36:51 CEST 2009


Hi!

I need help in debugging Erlang on Linux (specifically Debian Linux)
on UltraSparc III hardware). So far only non-threaded build works
fine, though it means no SMP and no wxErlang.

In threads enabled build beam binary crashes often with segmentation
faults or bus errors. When I build Erlang with debug info enabled
(make TYPE=debug) I get very different debug messages just before
crash (or before internal compiler errors):

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
Function: '-read_grammar/2-lc$^0/1-0-'/3
Assertion failed: is_header(hdr) in beam/copy.c, line 95
make[3]: *** [../ebin/yecc.beam] Aborted

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
Function: file/1
size_object: bad tag for 0x0
make[3]: *** [../ebin/yecc.beam] Aborted

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
Function: '-check_rules/1-fun-0-'/2
./yecc.erl:none: internal error in v3_codegen;
crash reason: {{case_clause,
                   {'EXIT',
                       {function_clause,
                           [{gb_trees,lookup_1,
                                [{'-check_rules/1-fun-0-',2},{}]},
                            {v3_codegen,local_func_label,2},
                            {v3_codegen,cg_fun,6},
                            {v3_codegen,function,3},
                            {lists,mapfoldl,3},
                            {lists,mapfoldl,3},
                            {v3_codegen,module,2},
                            {compile,'-select_passes/2-anonymous-2-',2}]}}},
               [{compile,'-select_passes/2-anonymous-2-',2},
                {compile,'-internal_comp/4-anonymous-1-',2},
                {compile,fold_comp,3},
                {compile,internal_comp,4},
                {compile,internal,3}]}
make[3]: *** [../ebin/yecc.beam] Error 1

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
make[3]: *** [../ebin/yecc.beam] Bus error

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
Assertion failed: !is_CP(tmp_arg1) in beam/beam_emu.c, line 2678
make[3]: *** [../ebin/yecc.beam] Aborted

erlc -W  +debug_info +warn_obsolete_guard
-I/home/sgolovan/debian/otp_src_R13B01/lib/stdlib/include -o../ebin
yecc.erl
ERROR: Fence at end of memory block (p=0x1891409952, sz=2056916) clobbered.
make[3]: *** [../ebin/yecc.beam] Aborted

and many others. I've collected several core dumps but can't find
anything useful in them (though I don't have much experience
in debugging threaded programs). The experiment was performed on clean
Erlang sources without any patches.
Core dumps can be found at http://sgolovan.nes.ru/erlang/

I will give you any additional info which I can get if it is needed.

Cheers!
-- 
Sergei Golovan


More information about the erlang-questions mailing list