Re: Disable -lmcheck when Python has threads (Re: [BUG] gdb crash when "python import gtk")

Khoo Yit Phang
2012-08-30T16:41:05Z

Hi,

Here's a test case that shows the problem, semi-reliably (it is a concurrency bug):

(gdb) python
>from threading import Thread
>def blah():
> while True:
> a = [ {}, {}, {}, {}, 1, 2, "abc" ]
>
>t = Thread(None, blah)
>t.start()
>
>for i in range(100000):
> gdb.execute("break foo", to_string=True)
>end
(gdb) *** glibc detected *** /home/khooyp/Projects/Research/gdb-1/build.yubuntu/gdb/gdb: munmap_chunk(): invalid pointer: 0x09b05d10 ***
...

It is unrelated to pygtk.

Yit
August 30, 2012

On Aug 30, 2012, at 12:11 PM, Khoo Yit Phang wrote:

> Hi,
>
> Here's the corresponding bug report for glibc stating that it is by design: http://sourceware.org/bugzilla/show_bug.cgi?id=9939
>
> Yit
> August 30, 2012
>
> On Aug 30, 2012, at 12:08 PM, Khoo Yit Phang wrote:
>
>> Hi,
>>
>> On Aug 30, 2012, at 12:04 PM, Jan Kratochvil wrote:
>>
>>> Hi,
>>>
>>> On Thu, 30 Aug 2012 18:00:46 +0200, Khoo Yit Phang wrote:
>>>> I ran into a similar issue as below and tracked it down: the "memory
>>>> clobbered before allocated block" (and other related messages) because
>>>> -lmcheck is not thread safe, and triggers spuriously when threads are used
>>>> in Python (e.g., the "gtk" module).
>>>
>>> this needs some references to glibc/gtk/python maintainers statements etc.
>>>
>>> -lmcheck is AFAIK thread safe in glibc itself.
>>
>> -lmcheck is definitely not thread safe, at least as of glibc 2.13 (Ubuntu 11.04). See the first answer of http://stackoverflow.com/questions/314931/glibcs-lmcheck-option-and-multithreading.
>>
>> Yit
>> August 30, 2012