[erlang-questions] R14B Illegal instruction?

Mikael Pettersson <>
Fri Sep 17 23:22:26 CEST 2010


Mark Scandariato writes:
 > (gdb) disassemble
 > Dump of assembler code for function ethr_event_reset__:
 > 0x0823d501 <ethr_event_reset__+0>:    push   %ebp
 > 0x0823d502 <ethr_event_reset__+1>:    mov    %esp,%ebp
 > 0x0823d504 <ethr_event_reset__+3>:    sub    $0x8,%esp
 > 0x0823d507 <ethr_event_reset__+6>:    mov    0x8(%ebp),%eax
 > 0x0823d50a <ethr_event_reset__+9>:    movl   $0x77777777,0x4(%esp)
 > 0x0823d512 <ethr_event_reset__+17>:    mov    %eax,(%esp)
 > 0x0823d515 <ethr_event_reset__+20>:    call   0x8238488 <ethr_atomic_set>
 > 0x0823d51a <ethr_event_reset__+25>:    mfence
 > 0x0823d51d <ethr_event_reset__+28>:    leave
 > 0x0823d51e <ethr_event_reset__+29>:    ret
 > End of assembler dump.
 > (gdb) info all-registers
...
 > eip            0x823d51a    0x823d51a <ethr_event_reset__+25>

Sigh.  See Rickard Green's reply.  Builds on 32-bit x86 now
use Pentium 4 instructions without prior runtime checks or
explicit configure-time options.  You now have to explicitly
configure pre-Pentium 4 compatibility before the build.

Needless to say I think they got the logic wrong.  Defaults
should be safe, with options for higher-performance (but potentially
incompatible) code if needed.


More information about the erlang-questions mailing list