[erlang-questions] R14B Illegal instruction?
Mikael Pettersson
mikpe@REDACTED
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