Bug 12027 - oil_init crashes creating test object
Summary: oil_init crashes creating test object
Status: RESOLVED FIXED
Alias: None
Product: liboil
Classification: Unclassified
Component: unknown (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: David Schleef
QA Contact: David Schleef
URL:
Whiteboard:
Keywords:
: 12111 (view as bug list)
Depends on:
Blocks:
 
Reported: 2007-08-16 02:55 UTC by Bastien Nocera
Modified: 2008-03-13 16:57 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments

Description Bastien Nocera 2007-08-16 02:55:26 UTC
On PPC again, with the following test program:
#include <stdio.h>
#include <liboil/liboilcpu.h>
int main (int argc, char **argv)
{
oil_init();
oil_init();
printf("done\n");
}

$ libtool gdb ./test
*** Warning: inferring the mode of operation is deprecated.
*** Future versions of Libtool will require --mode=MODE be specified.
GNU gdb Red Hat Linux (6.6-15.fc7rh)
Copyright (C) 2006 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 "ppc64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) handle SIGILL nostop
Signal        Stop      Print   Pass to program Description
SIGILL        No        Yes     Yes             Illegal instruction
(gdb) handle SIGILL pass
Signal        Stop      Print   Pass to program Description
SIGILL        No        Yes     Yes             Illegal instruction
(gdb) run
Starting program: /home/hadess/packages/BUILD/liboil-0.3.12/liboil/.libs/lt-test 

Program received signal SIGILL, Illegal instruction.

Program received signal SIGILL, Illegal instruction.

Program received signal SIGABRT, Aborted.
0x0000008015472024 in .raise () from /lib64/libc.so.6
(gdb) bt
#0  0x0000008015472024 in .raise () from /lib64/libc.so.6
#1  0x0000008015473f6c in .abort () from /lib64/libc.so.6
#2  0x00000400000363f8 in illegal_instruction_handler (num=0) at liboilcpu.c:159
#3  <signal handler called>
#4  oil_prototype_from_string (s=0x40000075cf0 "float *dest, int dstr, float *src, int sstr, int n") at liboilprototype.c:189
#5  0x000004000003b588 in oil_test_new (klass=0x400000964a0) at liboiltest.c:73
#6  0x0000040000036fdc in oil_class_optimize (klass=0x400000964a0) at liboilfunction.c:350
#7  0x0000040000037390 in oil_optimize_all () at liboilfunction.c:181
#8  0x0000040000037510 in oil_init () at liboilfunction.c:140
#9  0x0000000010000668 in main (argc=482544, argv=0x4000006aa88) at test.c:5
Comment 1 Bastien Nocera 2007-08-23 03:31:03 UTC
David Woodhouse, in https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=252179#c13 says:
"
The problem here is nothing to do with the explicit altivec test.
The problem here is because you've told the compiler it's allowed to use altivec
in normal C code, and recently is grew smart enough to actually do so. <snip>

Program received signal SIGILL, Illegal instruction.
oil_prototype_from_string (
    s=0x10032c98 "float *dest, int dstr, float *src, int sstr, int n")
    at liboilprototype.c:189
189       OilParameter param = { 0 };
(gdb) bt
#0  oil_prototype_from_string (
    s=0x10032c98 "float *dest, int dstr, float *src, int sstr, int n")
    at liboilprototype.c:189
#1  0x10002f18 in oil_test_new (klass=0x10042d58) at liboiltest.c:73
#2  0x100011a8 in oil_class_optimize (klass=0x10042d58) at liboilfunction.c:350
#3  0x28000488 in ?? ()
#4  0x100014a0 in oil_optimize_all () at liboilfunction.c:179
#5  0x100015b4 in oil_init () at liboilfunction.c:140
#6  0x10000adc in main ()
(gdb) x/i $pc
0x1002fe04 <oil_prototype_from_string+4>:       vxor    v0,v0,v0
"

So either altivec needs to be disabled altogether, or 2 backends need to be compiled, one with altivec support, one without.
Comment 2 David Schleef 2008-02-20 14:53:29 UTC
liboil stopped using -maltivec a while ago (brainfart), so I don't think this is likely to be a problem.  Please test on the upcoming release.
Comment 3 David Schleef 2008-02-20 14:54:05 UTC
*** Bug 12111 has been marked as a duplicate of this bug. ***
Comment 4 David Schleef 2008-03-13 16:57:59 UTC
Tested with git HEAD, works.  Closing.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.