FS#29546 - [gnustep-base] Illegal instruction in i686

Attached to Project: Community Packages
Opened by Kyle Keen (keenerd) - Friday, 20 April 2012, 21:42 GMT
Last edited by Balló György (City-busz) - Monday, 09 September 2013, 20:25 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Sergej Pupykin (sergej)
Architecture i686
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
It seems that the gnustep-base package is not built for i686. A package (cenon) using the gnustep libraries fails with "Illegal instruction". GDB indicates that the error occurs inside gnustep. Inspecting the disassembly finds a reference to the xmm0 register, part of SSE.

Another oddity: The cpu is a P3 with SSE so in theory this bug should not cause a crash.

Additional info:
gnustep-base-1.24.0-2 (i686)
http://kmkeen.com/tmp/cenon.gdb
https://aur.archlinux.org/packages.php?ID=43645

Steps to reproduce:
Build Cenon.
Launch.
Immediate failure of "Illegal instruction".

This task depends upon

Closed by  Balló György (City-busz)
Monday, 09 September 2013, 20:25 GMT
Reason for closing:  Fixed
Comment by Allan McRae (Allan) - Saturday, 21 April 2012, 00:30 GMT
If the bug gets assigned to me, I will drop this package from the repos.
Comment by Sergej Pupykin (sergej) - Thursday, 03 May 2012, 10:02 GMT
can not build cenon because of gcc47.patch is missing
Comment by Kyle Keen (keenerd) - Friday, 04 May 2012, 00:24 GMT
Sorry, fixed.
Comment by Sergej Pupykin (sergej) - Thursday, 17 May 2012, 14:54 GMT
Unfortunately I have no i686, but I cannot reproduce on i686 chroot:

$ Cenon
Couldn't open file /proc/30931/cmdline when starting gnustep-base; No such file or directory
Your gnustep-base library is compiled for a kernel supporting the /proc filesystem, but it can't access it.
You should recompile or change your kernel.
We try to go on anyway; but the program will ignore any argument which were passed to it.
2012-05-17 14:54:21.498 Cenon[30931] Did not find correct version of backend (libgnustep-back-022.bundle), falling back to std (libgnustep-back.bundle).
2012-05-17 14:54:21.499 Cenon[30931] NSApplication.m:304 Assertion failed in initialize_gnustep_backend. Unable to find backend back
Cenon: Uncaught exception NSInternalInconsistencyException, reason: NSApplication.m:304 Assertion failed in initialize_gnustep_backend. Unable to find backend back
Comment by Kyle Keen (keenerd) - Saturday, 19 May 2012, 12:41 GMT
Sounds like your chroot is incomplete.

mount -o bind /proc "$chroot_path/proc"
mount -o bind /dev "$chroot_path/dev"
mount -o bind /sys "$chroot_path/sys"
Comment by Sergej Pupykin (sergej) - Monday, 04 June 2012, 07:58 GMT
Can it be reproduced after fixing of  FS#30103  ?
Comment by Kyle Keen (keenerd) - Monday, 04 June 2012, 09:45 GMT
Yes, the illegal instruction error persists.
Comment by Sergej Pupykin (sergej) - Wednesday, 08 May 2013, 15:25 GMT
Can it be reproduced with latest gnustep?
Comment by Alister Hood (Alister) - Saturday, 11 May 2013, 09:03 GMT
> Another oddity: The cpu is a P3 with SSE so in theory this bug should not cause a crash.

This is all way over my head, but are you sure the problem isn't that it needs SSE2?
I have never been able to run anything built with gnustep on my machine. In fact, I always see errors like this during the build, do you?:
/bin/sh: line 2: 4676 Illegal instruction (core dumped) plmerge Cenon.app/Resources/Info-gnustep.plist "CenonInfo.plist"
Other programs which segfault on this machine tend to require sse2 (e.g. libcef).
Comment by Balló György (City-busz) - Monday, 09 September 2013, 18:18 GMT
Cenon runs fine on my 32 bit Intel Celeron CPU with SSE2. However, I think that the problem is probably caused by the gnustep-make package. It sets the CPU architecture to `uname -m`, which means that it's always x86_64 on a 64 bit machine, even if you are in a 32 bit chroot. So it should be explicitly set to 'i686' for 32 bit, and 'x86_64' for 64 bit. Then we should rebuild all 32 bit gnustep packages. See the sed lines in the PKGBUILD of gnustep-make:
https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/gnustep-make

Could someone confirm this assumption?
Comment by Balló György (City-busz) - Monday, 09 September 2013, 20:24 GMT
Now I fixed the gnustep-make package, and rebuilt gnustep packages in the official repositories. So if you build Cenon (or any other GNUstep based packages) from AUR, you should be able to run it on any i686 system.

Loading...