[erlang-questions] Re: R14B Illegal instruction?

Mark Scandariato <>
Fri Sep 17 23:06:43 CEST 2010


It is a 2005-vintage AMD Athlon XP (in a VMWare virtual machine).

Configuring with "--enable-ethread-pre-pentium4-compatibility
enable_ethread_pre_pentium4_compatibilit=yes" did the trick - Thanks!

On Fri, Sep 17, 2010 at 3:52 PM, Rickard Green <> wrote:

>
> Mark Scandariato wrote:
>
>> just built R14B for Ubuntu 9.04 (gcc version 4.3.3 (Ubuntu
>> 4.3.3-5ubuntu4)) and when I try to enable some async threads, I get an
>> "Illegal instruction" fault.
>>
>> Here's a stack trace:
>>
>> :~/otp_src_R14B$ bin/cerl -debug +A 4
>> Illegal instruction (core dumped)
>> :~/otp_src_R14B$ gdb --core=core
>> GNU gdb 6.8-debian
>> Copyright (C) 2008 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later <
>> http://gnu.org/licenses/gpl.html
>>
>>>
>>>  This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "i486-linux-gnu".
>> (no debugging symbols found)
>> Core was generated by
>> `/home/erlang/otp_src_R14B/bin/i686-pc-linux-gnu/beam.debug -A 4 -- -root
>> /h'.
>> Program terminated with signal 4, Illegal instruction.
>> [New process 28563]
>> [New process 28587]
>> #0  0x0823d51a in ?? ()
>> (gdb) file /home/erlang/otp_src_R14B/bin/i686-pc-linux-gnu/beam.debug
>> Reading symbols from
>> /home/erlang/otp_src_R14B/bin/i686-pc-linux-gnu/beam.debug...done.
>> (gdb) where
>> #0  ethr_event_reset__ (e=0xb769c030) at
>> ../include/internal/pthread/ethr_event.h:94
>> #1  0x0823d723 in ethr_event_reset (e=0xb769c030) at
>> pthread/ethr_event.c:200
>> #2  0x0823cf1c in ethr_thr_create (tid=0xb7580ca4, func=0x81515c6
>> <async_main>, arg=0xb7580c48, opts=0xbfb85348) at pthread/ethread.c:256
>> #3  0x080cb160 in erts_thr_create (tid=0xb7580ca4, func=0x81515c6
>> <async_main>, arg=0xb7580c48, opts=0xbfb85348) at beam/erl_threads.h:348
>> #4  0x081511bb in init_async (hndl=6) at beam/erl_async.c:143
>> #5  0x081c62ab in async_drv_start (port_num=1, name=0x825f3fa "async",
>> opts=0xbfb85400) at sys/unix/sys.c:2375
>> #6  0x080e48d5 in erts_open_driver (driver=0xb769dbb8, pid=4294967291,
>> name=0x825f3fa "async", opts=0xbfb85400, error_number_ptr=0x0)
>>   at beam/io.c:641
>> #7  0x081c66a5 in sys_init_io () at sys/unix/sys.c:2528
>> #8  0x080e60d3 in init_io () at beam/io.c:1304
>> #9  0x0809b41b in erl_init () at beam/erl_init.c:281
>> #10 0x0809dd25 in erl_start (argc=15, argv=0xbfb85704) at
>> beam/erl_init.c:1389
>> #11 0x0807f126 in main (argc=4001536, argv=0x0) at sys/unix/erl_main.c:29
>>
>>
>> I can send a core file if anyone wants it.
>>
>
> I suspect that you have an old x86 processor, and probably need to pass the
> --enable-ethread-pre-pentium4-compatibility command line argument to
>  configure. See <
> http://www.erlang.org/doc/installation_guide/INSTALL.html#How-to-Build-and-Install-ErlangOTP_A-Closer-Look-at-the-individual-Steps_Configuring
> >.
>
> However, I just noted that this flag is buggy and have no effect :( I'll
> fix that in the next release. As a workaround you can pass the following as
> arguments to configure:
>  --enable-ethread-pre-pentium4-compatibility
> enable_ethread_pre_pentium4_compatibilit=yes
>
> It is important that you pass both of them otherwise it wont work. You can
> verify that it worked by verifying that the following line exists in both
> $ERL_TOP/erts/include/internal/i686-pc-linux-gnu/ethread_header_config.h and
> $ERL_TOP/erts/i686-pc-linux-gnu/config.h:
>
> #define ETHR_PRE_PENTIUM4_COMPAT 1
>
> In order to avoid trouble, don't reuse the source tree you have already
> built in. Build from scratch in a new one.
>
> Regards,
> Rickard
> --
> Rickard Green, Erlang/OTP, Ericsson AB.
>
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:
>
>


More information about the erlang-questions mailing list