beam crashes on inet_gethost port
Daniel Goertzen
goertzen@REDACTED
Mon Jun 5 17:10:19 CEST 2006
I am still trying to get a cross compiled system going (x86_64 to i486,
linux, R11B0), but am having troubles. When I run my i486 erlang I get:
bash-3.00# erl
Segmentation Fault
bash-3.00#
After much tracing with strace, it is revealed that beam crashes after
using inet_gethost as a port. Beam appears to conduct a successful
transaction with inet_gethost, then starts to close the port.
inet_gethost shuts down properly, but beam segfaults immediately after
receiving SIGCHLD.
Any ideas where to look next?
Thanks,
Dan.
Here is a fragment of a trace:
hints:
pid 3931 = beam
pid 3937 = inet_gethost
pid 3938 = inet_gethost child worker process
comments in double braces, ie {{comment}}
bash-3.00# strace -f erl
.
(snip)
.
[pid 3931] close(7) = 0 {{this is beam's
write pipe to inet_gethost}}
[pid 3931] fcntl64(10, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK)
[pid 3931] fcntl64(10, F_SETFL, O_WRONLY) = 0
[pid 3931] close(10 <unfinished ...>
[pid 3937] <... select resumed> ) = 1 (in [0])
[pid 3931] <... close resumed> ) = 0
[pid 3937] read(0, <unfinished ...>
[pid 3931] times( <unfinished ...>
[pid 3937] <... read resumed> "", 4) = 0
[pid 3931] <... times resumed> {tms_utime=9, tms_stime=0, tms_cutime=0,
tms_cstime=0}) = 1923210188
[pid 3937] kill(3938, SIGUSR1 <unfinished ...> {{inet_gethost cleans
up its child}}
[pid 3931] gettimeofday( <unfinished ...>
[pid 3937] <... kill resumed> ) = 0
[pid 3931] <... gettimeofday resumed> {1149519332, 422564}, NULL) = 0
[pid 3937] exit_group(0) = ?
Process 3937 detached {{inet_gethost}
[pid 3931] times({tms_utime=9, tms_stime=0, tms_cutime=0,
tms_cstime=0}) = 1923210188
[pid 3931] --- SIGCHLD (Child exited) @ 0 (0) --- {{ beam sees
inet_gethost exiting }}
[pid 3931] --- SIGSEGV (Segmentation fault) @ 0 (0) --- {{beam goes
tits up :( }}
[pid 3938] <... read resumed> "", 4) = 0
[pid 3938] --- SIGUSR1 (User defined signal 1) @ 0 (0) ---
Process 3938 detached
[pid 3935] <... poll resumed> [{fd=5, events=POLLIN}], 1, 2000) = -1
EINTR (Interrupted system call)
[pid 3936] +++ killed by SIGKILL +++
[pid 3931] +++ killed by SIGSEGV +++
+++ killed by SIGKILL +++
bash-3.00#
More information about the erlang-questions
mailing list