discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

libobjc ABI incompatibilities


From: Andreas Fink
Subject: libobjc ABI incompatibilities
Date: Tue, 16 Oct 2018 08:34:44 +0200

Hello all
I have a project constantly eating memory in some cases. With the help of 
Valgind I broke it down to the fact that apparently all objc objects are never 
released and this not in my code and it seems to be they are all allocated like 
this:

==26443== 4,825,344 bytes in 50,264 blocks are definitely lost in loss record 
5,148 of 5,148
==26443==    at 0x7D24BC5: calloc (vg_replace_malloc.c:711)
==26443==    by 0x8778216: allocate_class (in /usr/local/lib/libobjc.so.4.6)
==26443==    by 0x876818B: class_createInstance (in 
/usr/local/lib/libobjc.so.4.6)
==26443==    by 0x8770983: objc_upgrade_protocol_gsv1 (in 
/usr/local/lib/libobjc.so.4.6)
==26443==    by 0x8764CBF: init_protocols (in /usr/local/lib/libobjc.so.4.6)
==26443==    by 0x87649A7: objc_init_protocols (in 
/usr/local/lib/libobjc.so.4.6)
==26443==    by 0x87706D9: objc_upgrade_category (in 
/usr/local/lib/libobjc.so.4.6)
==26443==    by 0x876456E: __objc_exec_class (in /usr/local/lib/libobjc.so.4.6)
==26443==    by 0x7106859: call_init.part.0 (dl-init.c:72)
==26443==    by 0x710696A: call_init (dl-init.c:30)
==26443==    by 0x710696A: _dl_init (dl-init.c:120)
==26443==    by 0x70F7C59: ??? (in /lib/x86_64-linux-gnu/ld-2.24.so)
==26443==    by 0x1: ???

objc_upgrade_protocol_gsv1 points to OLDABI_COMPAT being true (as otherwise it 
is not compiled in)

I'm using the latest libojbc2-1.9 gnustep-make and gnustep-base. It seems that 
all code is compiled using -fobjc-runtime=gnustep-1.8 however (which comes from 
gnustep-make)
So its using an older ABI. From reading the readme's I learned that   
-fobjc-runtime=gnustep-2.0 and setting OLDABI_COMPAT to false would be more 
appropriate for me so I can finally forget all about the old ABI and would fail 
early if its still trying to be used.

However I have not found the correct way to set this for gnustep-make so it 
propagates to gnustep-base etc except patching makefiles or so.

Does anyone know what is the most clean way to have this configured?

Andreas





reply via email to

[Prev in Thread] Current Thread [Next in Thread]