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