gnustep / apps-gorm

Gorm is a clone of the Cocoa (OpenStep/NeXTSTEP) `Interface Builder' application for GNUstep
http://www.gnustep.org/
GNU General Public License v3.0
69 stars 20 forks source link

Gorm and gormtool 1.4.1 abort() on startup: Unknown protocol version #35

Closed buzzdeee closed 1 week ago

buzzdeee commented 5 months ago

This is on OpenBSD, amd64, following packages installed:

gnustep-back-0.31.0 GNUstep gui backend
gnustep-base-1.30.0p1 GNUstep base library
gnustep-gui-0.31.1  GNUstep gui library
gnustep-libobjc2-2.2.1p0 GNUstep libobjc2 objective-c runtime
gnustep-make-2.9.2  GNUstep makefile package

Installing using OpenBSD ports/packages framework, as well as installing from source, Gorm aborts with:

Unknown protocol versionAbort trap (core dumped)

Gorm 1.3.1 starts up all fine.

here a start from within gdb:

Reading symbols from /usr/local/bin/Gorm...
(No debugging symbols found in /usr/local/bin/Gorm)
(gdb) r
Starting program: /usr/local/bin/Gorm 
Unknown protocol version
Program received signal SIGABRT, Aborted.
thrkill () at /tmp/-:2
2       /tmp/-: No such file or directory.
(gdb) bt
#0  thrkill () at /tmp/-:2
#1  0xab34aa23e19956f3 in ?? ()
#2  0x00000dbe1446f6cb in _libc_abort () at /usr/src/lib/libc/stdlib/abort.c:51
#3  0x00000dbe03439688 in init_protocols (protocols=0xdbdf5954870 <objc_protocol_list>) at /home/ports/pobj/amd64/gnustep-libobjc2-2.2.1/libobjc2-2.2.1/protocol.c:225
#4  0x00000dbe034393fb in objc_init_protocols (protocols=0xdbdf5954870 <objc_protocol_list>) at /home/ports/pobj/amd64/gnustep-libobjc2-2.2.1/libobjc2-2.2.1/protocol.c:258
#5  0x00000dbe034314d2 in objc_load_class (class=0xdbdf5954890 <._OBJC_CLASS_NSAffineTransform>) at /home/ports/pobj/amd64/gnustep-libobjc2-2.2.1/libobjc2-2.2.1/class_table.c:465
#6  0x00000dbe034389c5 in __objc_load (init=0xdbdf5945b28 <objc_init>) at /home/ports/pobj/amd64/gnustep-libobjc2-2.2.1/libobjc2-2.2.1/loader.c:268
#7  0x00000dbdf5662551 in objcv2_load_function () from /usr/local/lib/libgnustep-base.so.10.7
#8  0x00000dbdbc439073 in _dl_call_init_recurse (object=0xdbd900db800, initfirst=0) at /usr/src/libexec/ld.so/loader.c:918
#9  0x00000dbdbc438f0d in _dl_call_init_recurse (object=0xdbd54959000, initfirst=0) at /usr/src/libexec/ld.so/loader.c:891
#10 0x00000dbdbc438f0d in _dl_call_init_recurse (object=0xdbd900dc800, initfirst=0) at /usr/src/libexec/ld.so/loader.c:891
#11 0x00000dbdbc438f0d in _dl_call_init_recurse (object=0xdbe0a400000, initfirst=0) at /usr/src/libexec/ld.so/loader.c:891
#12 0x00000dbdbc43541b in _dl_call_init (object=0xdbe0a400000) at /usr/src/libexec/ld.so/loader.c:857
#13 _dl_boot (argv=0x768ef19511e8, envp=<optimized out>, dyn_loff=15108558491648, dl_data=0x768ef1951150) at /usr/src/libexec/ld.so/loader.c:766
#14 0x00000dbdbc435c76 in _dl_start () at /usr/src/libexec/ld.so/amd64/ldasm.S:61
#15 0x0000000000000000 in ?? ()
(gdb) frame 3
#3  0x00000dbe03439688 in init_protocols (protocols=0xdbdf5954870 <objc_protocol_list>) at /home/ports/pobj/amd64/gnustep-libobjc2-2.2.1/libobjc2-2.2.1/protocol.c:225
225                                     abort();
(gdb) list
220                             (enum protocol_version)(uintptr_t)aProto->isa;
221                     switch (version)
222                     {
223                             default:
224                                     fprintf(stderr, "Unknown protocol version");
225                                     abort();
226     #ifdef OLDABI_COMPAT
227                             case protocol_version_gcc:
228                                     protocols->list[i] = objc_upgrade_protocol_gcc((struct objc_protocol_gcc *)aProto);
229                                     assert(aProto->isa == protocol_class_gcc);
(gdb) print version
$1 = 0
(gdb)
buzzdeee commented 1 week ago

Seems the issue was related to how gnustep-make was build and packaged, it starts nicely now with that one fixed.