Erlang on FreeBSD/amd64

Benno Rice <>
Thu Feb 17 14:14:13 CET 2005


Brian Buchanan wrote:
>>I tried following your suggestions but I wasn't able to work out how to
>>modify the bootstrap versions.  I assume I'd need to recompile them
>>somehow?  Editing the .erl files containing scan_toks/2 doesn't appear
>>to get me any extra debug output.
> 
> 
> You have to recompile the .erl files using a working erlc (I used a
> FreeBSD/i386 machine and copied the .beam files over).  Put the
> replacement beam files in boostrap/lib/stdlib/ebin/ or where appropriate.

Ok, latest stage is that I've gotten as far as instrumenting size_object 
  in erts/emulator/beam/copy.c and discovered that at some point, when 
being called in the lead up to the following (caused by a segmentation 
fault):

#0  0x0000000000446049 in copy_struct (obj=13805914, sz=67108887,
     hpp=0x7fffffffd4c8, off_heap=0x7e2378) at beam/copy.c:419
#1  0x000000000044f45d in queue_monitor_message (p=0x7e2178, ref=8327066,
     type=15627, item=355, reason=34373646266) at beam/bif.c:318
#2  0x000000000046506e in doit_exit_monitor (mon=0x7f0f68,
     vpcontext=0x7fffffffd880) at beam/erl_process.c:1304
#3  0x00000000004b15d8 in erts_sweep_monitors (root=0x0,
     doit=0x464e00 <send_exit_message+320>, context=0x7fffffffd880)
     at beam/erl_monitors.c:692
#4  0x000000000046571c in do_exit (p=0x7e23b8, reason=34373646266)
     at beam/erl_process.c:1459
#5  0x00000000004c5254 in terminate_proc (c_p=0x7e23b8, Value=34373646266)
     at beam/beam_emu.c:4203
#6  0x00000000004c5000 in handle_error (c_p=0x7e23b8, pc=0x90dc68,
     reg=0x663080, bf=0x44ef40) at beam/beam_emu.c:4143
#7  0x00000000004bac31 in process_main () at beam/beam_emu.c:1961
#8  0x000000000042f5c5 in erl_start (argc=30, argv=0x7fffffffe020)
     at beam/erl_init.c:855
#9  0x000000000041a3a9 in main (argc=13907898, argv=0x4000017)
     at sys/unix/erl_main.c:28

that in size_object, I'm ending up with an object whose primary_tag is 
TAG_PRIMARY_BOXED but whose header value ends up being 0xffffffff.  Is 
this at all expected?  It appears to cause thing_arityval to return a 
bogus value but I'm not sure.  Am I on the right track here?  Or is 
there somewhere else I should look?

-- 
Benno Rice

http://jeamland.net/



More information about the erlang-bugs mailing list