Message138506
| Author |
greg.ath |
| Recipients |
greg.ath |
| Date |
2011年06月17日.13:19:43 |
| SpamBayes Score |
4.39158e-09 |
| Marked as misclassified |
No |
| Message-id |
<1308316788.45.0.312348703073.issue12352@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
Hi,
My multithreaded application uses multithreading.Value() to ensure thread-safe operations on shared data.
For unexpected reasons, after some change in my code, the function will consistently hang.
I did a gdb backtrace of the hanging process, and I discovered that the multiprocessing.head.py tries to acquire twice a same non recursive lock.
The first aquire is done in the "malloc" function:
#61 call_function (f=
Frame 0x13be190, for file /usr/lib/python2.6/multiprocessing/heap.py, line 173, in malloc (self=<Heap(_stop_to_block={}, _lengths=[], _lock=<thread.lock at remote 0x7f00fc770eb8>, _allocated_blocks=set([...
The second aquire is done in the "free" function:
#3 0x00000000004a7c5e in call_function (f=
Frame 0x1662d50, for file /usr/lib/python2.6/multiprocessing/heap.py, line 155, in free (self=<Heap(_stop_to_block={}, _lengths=[], _lock=<thread.lock at remote 0x7f00fc770eb8>, _allocated_blocks=set([...
I don't understand the link between these two method calls, so I am unable to write an easy script to reproduce the problem. I would say that some garbage collection was done within the malloc, which called the free.
Python 2.6.5
Linux dev 2.6.32-25-server #45-Ubuntu SMP Sat Oct 16 20:06:58 UTC 2010 x86_64 GNU/Linux |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2011年06月17日 13:19:49 | greg.ath | set | recipients:
+ greg.ath |
| 2011年06月17日 13:19:48 | greg.ath | set | messageid: <1308316788.45.0.312348703073.issue12352@psf.upfronthosting.co.za> |
| 2011年06月17日 13:19:47 | greg.ath | link | issue12352 messages |
| 2011年06月17日 13:19:47 | greg.ath | create |
|