Bug 157409

Summary: gimp fails to start with "Illegal Instruction"
Product: [Fedora] Fedora Reporter: James Laska <jlaska>
Component: gimpAssignee: Nils Philippsen <nphilipp>
Status: CLOSED CURRENTRELEASE QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: icon, jturner, marius.andreiana, mgb, paul, sundaram, tmraz, tpfennig, yusufma77, zuirdj
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: 2.2.7-4 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-09-05 00:24:59 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description James Laska 2005-05-11 13:30:54 UTC
RPM: gimp-2.2.7-1.i386

$ gimp
Illegal instruction

http://people.redhat.com/jlaska/gimp.ltrace
http://people.redhat.com/jlaska/gimp.strace

$ > gdb /usr/bin/gimp
GNU gdb Red Hat Linux (6.3.0.0-1.21rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db
library "/lib/libthread_db.so.1".

(gdb) r
Starting program: /usr/bin/gimp
Reading symbols from shared object read from target memory...done.
Loaded system supplied DSO at 0x9f6000
[Thread debugging using libthread_db enabled]
[New Thread -1208400192 (LWP 4786)]

Program received signal SIGILL, Illegal instruction.
[Switching to Thread -1208400192 (LWP 4786)]
0x00be4989 in gimp_rgba_get_uchar (rgba=0x971a018, r=0xbfcad3d0
"x\203p\t`\uffff\026", g=0xbfcad3d1 "\203p\t`\uffff\026",
    b=0xbfcad3d2 "p\t`\uffff\026", a=0xbfcad3d3 "\t`\uffff\026") at gimprgb.c:360
360       if (r) *r = ROUND (CLAMP (rgba->r, 0.0, 1.0) * 255.0);
(gdb)


Let me know if you have additional debugging tips.

Comment 1 James Laska 2005-05-11 13:31:14 UTC
Forgot the backtrace ...

(gdb) bt
#0  0x00be4989 in gimp_rgba_get_uchar (rgba=0x971a018, r=0xbfcad3d0
"x\203p\t`\uffff\026", g=0xbfcad3d1 "\203p\t`\uffff\026",
    b=0xbfcad3d2 "p\t`\uffff\026", a=0xbfcad3d3 "\t`\uffff\026") at gimprgb.c:360
#1  0x0821ff08 in gimp_param_rgb_values_cmp (pspec=0x9708378, value1=0x0,
value2=0xbfcad420) at gimpconfig-params.c:159
#2  0x00144ad6 in g_param_values_cmp () from /usr/lib/libgobject-2.0.so.0
#3  0x0821dad4 in gimp_config_iface_equal (a=0x971b3c8, b=0x96cb440) at
gimpconfig.c:206
#4  0x08221bfc in gimp_config_diff_property (a=Variable "a" is not available.
) at gimpconfig-utils.c:165
#5  0x08221cd6 in gimp_config_diff_same (a=0x971a578, b=0x96cb278, flags=3) at
gimpconfig-utils.c:202
#6  0x08222099 in gimp_config_sync (src=0x971a578, dest=0x96cb278, flags=3) at
gimpconfig-utils.c:315
#7  0x08227676 in gimp_rc_duplicate (config=0x971a578) at gimprc.c:319
#8  0x0819346c in gimp_load_config (gimp=0x970e748, alternate_system_gimprc=0x0,
alternate_gimprc=0x0) at gimp.c:817
#9  0x080630c2 in app_run (full_prog_name=0x0, gimp_argc=0,
gimp_argv=0xbfcad7f8, alternate_system_gimprc=0x0,
    alternate_gimprc=0x0, session_name=0x0, batch_interpreter=0x0,
batch_commands=0x0, no_interface=0, no_data=0,
    no_fonts=0, no_splash=0, be_verbose=0, use_shm=0, use_cpu_accel=158441496,
console_messages=0,
    stack_trace_mode=GIMP_STACK_TRACE_NEVER,
pdb_compat_mode=GIMP_PDB_COMPAT_OFF) at app_procs.c:265
#10 0x08063bfc in main (argc=1, argv=0xbfcad7f4) at main.c:473
#11 0x002d0de6 in __libc_start_main () from /lib/libc.so.6
#12 0x08062e81 in _start ()


Comment 2 Lars G 2005-05-11 15:56:32 UTC
same here.

Comment 3 Zuirdj 2005-05-11 16:38:45 UTC
+1

Comment 4 Nils Philippsen 2005-05-12 10:31:36 UTC
I'm working on a fix which still allows GIMP to utilize MMX/SSE/SSE2 optimized
code on CPUs that can handle it.

Comment 5 Nils Philippsen 2005-05-12 10:37:09 UTC
*** Bug 157487 has been marked as a duplicate of this bug. ***

Comment 6 Nils Philippsen 2005-05-12 10:37:30 UTC
*** Bug 157473 has been marked as a duplicate of this bug. ***

Comment 7 Nils Philippsen 2005-05-13 08:26:14 UTC
*** Bug 157621 has been marked as a duplicate of this bug. ***

Comment 8 Zuirdj 2005-05-13 15:57:50 UTC
It seems that bug was fixed with latest rawhide (gimp-2.2.7-2)

Comment 9 James Laska 2005-05-13 16:04:05 UTC
Confirmed ... gimp-2.2.7-2.i386 no longer causes "Illegal Instruction" failure.   

* Wed May 11 2005 Nils Philippsen <nphilipp>
- use -mmmx/sse/sse2/... only for the relevant source files so that extended
  instruction sets only get used on suitable CPUs (#157409)

Holding off from closing this defect until it is placed in MODIFIED.


Comment 10 Lars G 2005-05-13 16:31:34 UTC
works for me too, thanks for fixing!

Comment 11 Nils Philippsen 2005-05-14 12:06:07 UTC
The real fix is in 2.2.7-4 which allows asm optimizations on CPUs that support
it again (2.2.7-2 only used generic C routines, courtesy of libtool :-().

For differences between the two releases, check the output of "gimp --verbose"
and look at the line "Processor instruction sets". With 2.2.7-4, it's:

Processor instruction sets: +mmx +sse +sse2 -3dnow -altivec -vis

on my machine while with 2.2.7-2 it was:

Processor instruction sets: -mmx -sse -sse2 -3dnow -altivec -vis

meaning no utilization of the MMX/SSE instructions that my CPU would understand.