squeak - Illegal instruction (core dumped) when run on FreeBSD 10.1-RELEASE i386
ajtiik
ajtiik at yahoo.it
Fri Apr 17 23:27:36 UTC 2015
Attempting to run
$ squeak Squeak4.3.image
on FreeBSD 10.1-RELEASE i386
results in
Illegal instruction (core dumped)
.
This happens both when squeak is installed from the binary package:
# pkg install squeak
and when it is compiled and installed from ports with default settings:
# cd /usr/ports/lang/squeak
# setenv BATCH yes
# make install
.
As a workaround, I can get an i386 squeak version that works by
compiling and installing from ports with compiler optimizations disabled
like this:
# cd /usr/ports/lang/squeak
# setenv BATCH yes
# setenv CFLAGS -O0
# make install
or with debugging info:
# cd /usr/ports/lang/squeak
# setenv BATCH yes
# setenv WITH_DEBUG yes
# make install
.
Also, squeak runs normally on FreeBSD 10.1-RELEASE amd64.
Any ideas how to fix the i386 version?
Or how to modify the squeak port so that it compiles the i386 version
with CFLAGS set to -O0 by default so that the binary package works out
of the box?
Steps to reproduce the issue are below.
Best Regards,
Ajtiik.
This is how you can reproduce the issue on
- real i386 hardware and/or
- VirtualBox
on a clean install of FreeBSD 10.1 i386.
FreeBSD version info:
# uname -a
FreeBSD fbsd1 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11
22:51:51 UTC 2014
root at releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386
Install the binary squeak package:
# pkg install squeak
Copy the squeak image and changes file to the current directory:
$ cp /usr/local/lib/squeak/Squeak4.3.image .
$ cp /usr/local/lib/squeak/Squeak4.3.changes .
Run squeak:
$ squeak Squeak4.3.image
CHECKING cogvm
CHECKING squeakvm
Illegal instruction (core dumped)
This will have created a core file.
Please note that the creation of the core file can take several minutes
on slow hardware as its size is over 1GB. While creating the core file
the squeakvm process is unkillable.
Backtrace in gdb:
$ gdb /usr/local/lib/squeak/4.10.2-2614/squeakvm squeakvm.core
#0 0x08066b99 in interpret ()
[New Thread 28c05080 (LWP 100175/squeakvm)]
(gdb) bt
#0 0x08066b99 in interpret ()
#1 0x08075b80 in main ()
(gdb) disas
Dump of assembler code for function interpret:
0x08066b80 <interpret+0>: push %ebp
0x08066b81 <interpret+1>: mov %esp,%ebp
0x08066b83 <interpret+3>: cmpl $0x0,0x80ed388
0x08066b8d <interpret+13>: jne 0x8066b99 <interpret+25>
0x08066b8f <interpret+15>: movl $0x1966,0x80ed388
0x08066b99 <interpret+25>: ud2a
0x08066b9b <interpret+27>: nop
0x08066b9c <interpret+28>: nop
0x08066b9d <interpret+29>: nop
0x08066b9e <interpret+30>: nop
0x08066b9f <interpret+31>: nop
End of assembler dump.
(gdb) info registers
eax 0x0 0
ecx 0x3 3
edx 0x8 8
ebx 0xbfbfe974 -1077941900
esp 0xbfbfe8a0 0xbfbfe8a0
ebp 0xbfbfe8a0 0xbfbfe8a0
esi 0xbfbfe8e8 -1077942040
edi 0x0 0
eip 0x8066b99 0x8066b99
eflags 0x10246 66118
cs 0x33 51
ss 0x3b 59
ds 0x3b 59
es 0x3b 59
fs 0x3b 59
gs 0x1b 27
(gdb) quit
More information about the freebsd-ports
mailing list