Wed 25 Jun 2008 11:20:28 PM UTC, original submission:
I am using Ubuntu 8.04 (32-bit) in a VMWareFusion environment. I jsut update to this release and also updated GNUstep to latest SVN. Now an application that use to work give segmentation faults for both ffi and ffcall.
When trying to trac down the problem for ffcall further I ran the testsuite for base and got the following problem there (This works fine on my desktop computer):
ubuntu@ubuntu:/usr/src/gnustep/modules/tests/testsuite/base/NSProxy$ gdb obj/test01
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) r
Starting program: /usr/src/gnustep/modules/tests/testsuite/base/NSProxy/obj/test01
[Thread debugging using libthread_db enabled]
[New Thread 0xb77bb6b0 (LWP 895)]
PASS: Proxy signed char
PASS: Proxy unsigned char
PASS: Proxy signed short
PASS: Proxy unsigned short
PASS: Proxy singed int
PASS: Proxy unsigned int
PASS: Proxy signed long
PASS: Proxy unsigned long
PASS: Proxy signed long long
PASS: Proxy unsigned long long
PASS: Proxy float
PASS: Proxy float
PASS: Proxy id
PASS: Proxy enum
PASS: Proxy NSRange
PASS: Proxy NSPoint
PASS: Proxy NSDecimal
FAIL: Proxy GSFinePoint
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb77bb6b0 (LWP 895)]
0xb7c4c0f8 in mframe_next_arg (typePtr=0x0, info=0x809f1b0,
outTypes=0x809f1f9 "") at mframe.m:229
229 switch (*typePtr)
(gdb) bt
#0 0xb7c4c0f8 in mframe_next_arg (typePtr=0x0, info=0x809f1b0,
outTypes=0x809f1f9 "") at mframe.m:229
#1 0xb7d3e06e in -[NSMethodSignature(GNUstep) methodInfo] (self=0x809f108,
_cmd=0xb7f86658) at NSMethodSignature.m:189
#2 0xb7e00b08 in -[GSFFCallInvocation initWithMethodSignature:] (
self=0x809f170, _cmd=0xb7f866a8, aSignature=0x809f108)
at GSFFCallInvocation.m:547
#3 0xb7e0270a in GSInvocationCallback (callback_data=0x80710b8,
args=0xbfe52c94) at GSFFCallInvocation.m:957
#4 0xb785d6d5 in __vacall_r () from /usr/lib/libcallback.so.0
#5 0x080710b8 in ?? ()
#6 0xb7a3f450 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#7 0x08048ba1 in _start ()
The config.log for ffi and ffcall reads like this:
configure:16312: checking ffi.h presence
configure:16327: gcc -E -I/usr/GNUstep/System/Library/Headers conftest.c
configure:16333: $? = 0
configure:16347: result: yes
configure:16375: checking for ffi.h
configure:16382: result: yes
configure:16408: checking callback.h usability
configure:16425: gcc -c -g -O2 -I/usr/GNUstep/System/Library/Headers conftest.c >&5
configure:16431: $? = 0
configure:16445: result: yes
configure:16449: checking callback.h presence
configure:16464: gcc -E -I/usr/GNUstep/System/Library/Headers conftest.c
configure:16470: $? = 0
configure:16484: result: yes
configure:16512: checking for callback.h
configure:16520: result: yes
configure:16549: checking for forwarding callback in runtime
configure:16560: gcc -c -g -O2 -I/usr/GNUstep/System/Library/Headers -fgnu-runtime -x objective-c conftest.c >&5
In file included from conftest.c:1:
./config/config.forward2.m: In function 'main':
./config/config.forward2.m:5: error: '__objc_msg_forward2' undeclared (first use in this function)
./config/config.forward2.m:5: error: (Each undeclared identifier is reported only once
./config/config.forward2.m:5: error: for each function it appears in.)
configure:16566: $? = 1
configure: failed program was:
| #include "./config/config.forward2.m"
configure:16596: gcc -c -g -O2 -I/usr/GNUstep/System/Library/Headers -fgnu-runtime -x objective-c conftest.c >&5
configure:16602: $? = 0
configure:16617: result: yes
configure:16625: checking FFI library usage
configure:16716: gcc -o conftest -g -O2 -I/usr/GNUstep/System/Library/Headers -L/usr/GNUstep/System/Library/Libraries conftest.c -lcallback -lavcall -lnsl -ldl -lz >&5
configure:16722: $? = 0
configure:16739: result: ffcall
configure:16751: checking if ffcall trampolines work
configure:16765: gcc -o conftest -g -O2 -I/usr/GNUstep/System/Library/Headers -L/usr/GNUstep/System/Library/Libraries conftest.c -lcallback -lavcall -lnsl -ldl -lz >&5
configure:16768: $? = 0
configure:16774: ./conftest
configure:16777: $? = 0
configure:16792: result: yes
And to make it complete. My original error was:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb713a6c0 (LWP 27073)]
0xb77965c4 in objc_msg_lookup () from /usr/lib/libobjc.so.2
(gdb) bt
#0 0xb77965c4 in objc_msg_lookup () from /usr/lib/libobjc.so.2
#1 0xb79ec040 in GSInvocationCallback (callback_data=0xb7b87330,
args=0xbff89694) at GSFFCallInvocation.m:1050
#2 0xb72bb6d5 in __vacall_r () from /usr/lib/libcallback.so.0
#3 0xb7b87330 in returnTypeInfo ()
from /usr/GNUstep/System/Library/Libraries/libgnustep-base.so.1.17
#4 0xbff89694 in ?? ()
#5 0x0805c376 in -[MainController awakeFromNib] (self=0x8562e28,
_cmd=0xb7f3e508) at Source/MainController.m:199
|