discuss-gnustep
[Top][All Lists]
Advanced

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

Re: Odd problem


From: Fred Kiefer
Subject: Re: Odd problem
Date: Mon, 25 Jul 2011 12:44:29 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.18) Gecko/20110616 SUSE/3.1.11 Thunderbird/3.1.11

On 25.07.2011 12:31, Fred Kiefer wrote:
On 25.07.2011 07:17, Germán Arias wrote:
On dom, 2011-07-24 at 12:08 +0100, David Chisnall wrote:
On 24 Jul 2011, at 01:03, Germán Arias wrote:

As I can see this is a problem with libobjc in gcc, so I will ask at
gcc
help list. Thanks.

While I wouldn't completely rule out a libobjc bug, this kind of
crash is usually caused by a message being sent to a dangling
pointer. Try using valgrind or NSZombieEnabled to find what it is and
where it's being deallocated.

David


Attached the output of Valgrind with SystemPreferences (currently many
apps are broken). And if is useful the backtrace of gdb, also with
SystemPreferences. I notice that the broken apps, are those who need
frameworks (others than Base and Gui)- For example SystemPreferences is
broken, but need PreferencePanel.framework. Gorm is also broken. But
other apps, like Terminal and GMines, works fine. However, I get an
segmentation fault when I close these apps.

The way you called valgrind you are getting the loss records for your
shell. You should start it with a direct reference to the executable.
Something like:

valgrind SystemPreferences/SystemPreferences.app/SystemPreferences

I did that myself and I get a lot of valgind warnings that point into the direction of recent changes in GSIMap.h:

valgrind SystemPreferences/SystemPreferences.app/SystemPreferences
==6671== Memcheck, a memory error detector
==6671== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==6671== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==6671== Command: SystemPreferences/SystemPreferences.app/SystemPreferences
==6671==
==6671== Conditional jump or move depends on uninitialised value(s)
==6671==    at 0x619D741: objc_msg_lookup (in /usr/lib64/libobjc.so.2.0.0)
==6671==    by 0x5976127: _i_GSSet__initWithCoder_ (GSIMap.h:399)
==6671== by 0x5AD15D6: _i_NSUnarchiver__decodeValueOfObjCType_at_ (NSUnarchiver.m:662) ==6671== by 0x53E6CF9: _i_GSNibContainer__initWithCoder_ (GSGormLoading.m:395) ==6671== by 0x5AD15D6: _i_NSUnarchiver__decodeValueOfObjCType_at_ (NSUnarchiver.m:662)
==6671==    by 0x59C1B52: _i_NSCoder__decodeObject (NSCoder.m:221)
==6671== by 0x541A3DA: _i_GSGormLoader__loadModelData_externalNameTable_withZone_ (GSGormLoader.m:114) ==6671== by 0x524DA22: _c_NSBundle_NSBundleAdditions_loadNibFile_externalNameTable_withZone_ (NSBundleAdditions.m:235) ==6671== by 0x524DB7E: _c_NSBundle_NSBundleAdditions_loadNibNamed_owner_ (NSBundleAdditions.m:269) ==6671== by 0x4029D0: _i_SystemPreferences__applicationWillFinishLaunching_ (SystemPreferences.m:90) ==6671== by 0x5A5369C: _i_NSNotificationCenter___postAndRelease_ (NSNotificationCenter.m:1223) ==6671== by 0x52210BC: _i_NSApplication__finishLaunching (NSApplication.m:1006)
==6671==
==6671== Use of uninitialised value of size 8
==6671==    at 0x5976148: _i_GSSet__initWithCoder_ (GSIMap.h:406)
==6671== by 0x5AD15D6: _i_NSUnarchiver__decodeValueOfObjCType_at_ (NSUnarchiver.m:662) ==6671== by 0x53E6CF9: _i_GSNibContainer__initWithCoder_ (GSGormLoading.m:395) ==6671== by 0x5AD15D6: _i_NSUnarchiver__decodeValueOfObjCType_at_ (NSUnarchiver.m:662)
==6671==    by 0x59C1B52: _i_NSCoder__decodeObject (NSCoder.m:221)
==6671== by 0x541A3DA: _i_GSGormLoader__loadModelData_externalNameTable_withZone_ (GSGormLoader.m:114) ==6671== by 0x524DA22: _c_NSBundle_NSBundleAdditions_loadNibFile_externalNameTable_withZone_ (NSBundleAdditions.m:235) ==6671== by 0x524DB7E: _c_NSBundle_NSBundleAdditions_loadNibNamed_owner_ (NSBundleAdditions.m:269) ==6671== by 0x4029D0: _i_SystemPreferences__applicationWillFinishLaunching_ (SystemPreferences.m:90) ==6671== by 0x5A5369C: _i_NSNotificationCenter___postAndRelease_ (NSNotificationCenter.m:1223) ==6671== by 0x52210BC: _i_NSApplication__finishLaunching (NSApplication.m:1006)
==6671==    by 0x5223B47: _i_NSApplication__run (NSApplication.m:1540)
==6671==
==6671== Conditional jump or move depends on uninitialised value(s)
==6671==    at 0x619D741: objc_msg_lookup (in /usr/lib64/libobjc.so.2.0.0)
==6671==    by 0x5972942: _i_GSSet__member_ (GSIMap.h:643)
==6671==    by 0x5AA4742: _i_NSSet__containsObject_ (NSSet.m:478)
==6671== by 0x53E5FB8: _i_GSNibContainer__awakeWithContext_ (GSGormLoading.m:269) ==6671== by 0x541A46C: _i_GSGormLoader__loadModelData_externalNameTable_withZone_ (GSGormLoader.m:120) ==6671== by 0x524DA22: _c_NSBundle_NSBundleAdditions_loadNibFile_externalNameTable_withZone_ (NSBundleAdditions.m:235) ==6671== by 0x524DB7E: _c_NSBundle_NSBundleAdditions_loadNibNamed_owner_ (NSBundleAdditions.m:269) ==6671== by 0x4029D0: _i_SystemPreferences__applicationWillFinishLaunching_ (SystemPreferences.m:90) ==6671== by 0x5A5369C: _i_NSNotificationCenter___postAndRelease_ (NSNotificationCenter.m:1223) ==6671== by 0x52210BC: _i_NSApplication__finishLaunching (NSApplication.m:1006)
==6671==    by 0x5223B47: _i_NSApplication__run (NSApplication.m:1540)
==6671==    by 0x401C4B: main (main.m:40)
==6671==
==6671== Conditional jump or move depends on uninitialised value(s)
==6671==    at 0x5972954: _i_GSSet__member_ (GSIMap.h:643)
==6671==    by 0x5AA4742: _i_NSSet__containsObject_ (NSSet.m:478)
==6671== by 0x53E5FB8: _i_GSNibContainer__awakeWithContext_ (GSGormLoading.m:269) ==6671== by 0x541A46C: _i_GSGormLoader__loadModelData_externalNameTable_withZone_ (GSGormLoader.m:120) ==6671== by 0x524DA22: _c_NSBundle_NSBundleAdditions_loadNibFile_externalNameTable_withZone_ (NSBundleAdditions.m:235) ==6671== by 0x524DB7E: _c_NSBundle_NSBundleAdditions_loadNibNamed_owner_ (NSBundleAdditions.m:269) ==6671== by 0x4029D0: _i_SystemPreferences__applicationWillFinishLaunching_ (SystemPreferences.m:90) ==6671== by 0x5A5369C: _i_NSNotificationCenter___postAndRelease_ (NSNotificationCenter.m:1223) ==6671== by 0x52210BC: _i_NSApplication__finishLaunching (NSApplication.m:1006)
==6671==    by 0x5223B47: _i_NSApplication__run (NSApplication.m:1540)
==6671==    by 0x401C4B: main (main.m:40)
==6671==
==6671== Conditional jump or move depends on uninitialised value(s)
==6671==    at 0x619D741: objc_msg_lookup (in /usr/lib64/libobjc.so.2.0.0)
==6671==    by 0x5974CBD: _i_GSSet__dealloc (GSIMap.h:1185)
==6671==    by 0x53E4EC6: _i_GSNibContainer__dealloc (GSGormLoading.m:312)
==6671== by 0x59AB1AB: _i_NSAutoreleasePool__emptyPool (NSAutoreleasePool.m:656) ==6671== by 0x59AAFED: _i_NSAutoreleasePool__dealloc (NSAutoreleasePool.m:538)
==6671==    by 0x5223BCD: _i_NSApplication__run (NSApplication.m:1545)
==6671==    by 0x401C4B: main (main.m:40)
==6671==
==6671== Stack overflow in thread 1: can't grow stack to 0x7fe801be8
==6671==
==6671== Process terminating with default action of signal 11 (SIGSEGV)
==6671==  Access not within mapped region at address 0x7FE801BE8
==6671==    at 0x5B46C12: GSToUnicode (Unicode.m:946)
==6671==  If you believe this happened as a result of a stack
==6671==  overflow in your program's main thread (unlikely but
==6671==  possible), you can try to increase the size of the
==6671==  main thread stack using the --main-stacksize= flag.
==6671==  The main thread stack size used in this run was 8388608.
==6671== Stack overflow in thread 1: can't grow stack to 0x7fe801ba8
==6671==
==6671== Process terminating with default action of signal 11 (SIGSEGV)
==6671==  Access not within mapped region at address 0x7FE801BA8
==6671== at 0x4A205E0: _vgnU_freeres (in /usr/lib64/valgrind/vgpreload_core-amd64-linux.so)
==6671==  If you believe this happened as a result of a stack
==6671==  overflow in your program's main thread (unlikely but
==6671==  possible), you can try to increase the size of the
==6671==  main thread stack using the --main-stacksize= flag.
==6671==  The main thread stack size used in this run was 8388608.
==6671==
==6671== HEAP SUMMARY:
==6671==     in use at exit: 6,033,767 bytes in 51,746 blocks
==6671== total heap usage: 140,483 allocs, 88,737 frees, 19,895,807 bytes allocated
==6671==
==6671== LEAK SUMMARY:
==6671==    definitely lost: 164,555 bytes in 866 blocks
==6671==    indirectly lost: 179,184 bytes in 3,565 blocks
==6671==      possibly lost: 2,721,525 bytes in 21,307 blocks
==6671==    still reachable: 2,968,503 bytes in 26,008 blocks
==6671==         suppressed: 0 bytes in 0 blocks
==6671== Rerun with --leak-check=full to see details of leaked memory
==6671==
==6671== For counts of detected and suppressed errors, rerun with: -v
==6671== Use --track-origins=yes to see where uninitialised values come from
==6671== ERROR SUMMARY: 17 errors from 5 contexts (suppressed: 20 from 5)
Speicherzugriffsfehler


Could it be that there are cases (64-bit machine?) where node->key is not equal to GSI_MAP_READ_KEY(map, &node->key), that is (*(&node->key))?



reply via email to

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