<mattip>
note that in the last two lines, the thread ending in 016 does not print semlock_release before trying to acquire the lock again with sem_wait
<mattip>
so it seems to calls __enter__ twice without calling __exit__
<mattip>
somehow the self.count is getting to 2, the call chain for release is exit -> release -> (if self.count <= 1) ->semlock_release
forgottenone has joined #pypy
* mattip
suspecting the logic in W_SemLock._is_mine
<mattip>
the check "self.count > 0 and rthread.get_ident() == self.last_tid" is not atomic
alawrence has joined #pypy
alawrence has quit [Client Quit]
ruda_porto has quit [Ping timeout: 258 seconds]
ruda_porto has joined #pypy
alawrence has joined #pypy
jaffachief has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ruda_porto has quit [Remote host closed the connection]
antocuni has quit [Ping timeout: 258 seconds]
marky1991 has quit [Ping timeout: 258 seconds]
marky1991 has joined #pypy
forgottenone has quit [Quit: Konversation terminated!]
dddddd has quit [Ping timeout: 246 seconds]
<mattip>
the code for acquire/release needs to hold the GIL. The other locks defer to C but this is written in python :(
* mattip
off
<mattip>
anyone else want to take a look?
<alawrence>
mattip: Is this anything to do with the winapi?
<mattip>
alawrence: only if you use a _multiprocessing.RLock
<mattip>
it might explain why the buildbot hung, but then again there might be more bugs than this one
<alawrence>
There is definitely something strange going on in the multiprocessing tests.
<alawrence>
I havent got to the bottom of what is causing the behaviour yet.
<alawrence>
One thing that I have seen is that a skipped test produces an error code which is then picked up in subsequent tests that would pass otherwise.
<alawrence>
WithManagerTestSemaphore does some overlapped io but is actually skipped. I think the test setup/teardown still runs and something goes wrong there.
<alawrence>
Then when test_array is run it is encountering the error code from the other test.
<alawrence>
I have done something similar in cpython and the error code doesn't seem to polute the second test. Although I don't know if it is a real problem as I haven't replicated the situation exactly.
<mattip>
testsemaphore suggest it might be hitting the semaphore problem
marky1991 has quit [Read error: Connection reset by peer]
marky1991 has joined #pypy
marky1991 has quit [Remote host closed the connection]
marky1991 has joined #pypy
<alawrence>
It could be related but I would expect the test to just hang if that was the issue.
mattip has left #pypy ["Leaving"]
ronan has quit [Ping timeout: 257 seconds]
ronan has joined #pypy
ronan has quit [Ping timeout: 258 seconds]
ronan has joined #pypy
Rhy0lite has quit [Quit: Leaving]
ronan has quit [Ping timeout: 258 seconds]
dddddd has joined #pypy
xcm has quit [Remote host closed the connection]
ronan has joined #pypy
xcm has joined #pypy
lritter has quit [Ping timeout: 276 seconds]
ilbelkyr_ has quit [Quit: :tiuQ]
ilbelkyr has joined #pypy
marky1991 has quit [Read error: Connection reset by peer]