STINNER Victor <vstin...@redhat.com> added the comment:
> At a minimum I think there should be a check trying to reduce arguments via > incompatible context's process to prevent a SEGV. I'm not sure that I understand the bug. The reproducer script pass a multiprocessing.Queue to a child process and then the child crash when attempting to call multiprocessing.synchronize.Lock.__repr__(). Does the child reuse a copy of the lock of the parent process? Or does the child create a new SemLock? I reproduced the bug on Fedora 26. I attached the child process in gdb. The crash occurs on sem_getvalue() in the child process. Program received signal SIGSEGV, Segmentation fault. 0x00007f29a5156610 in sem_getvalue@@GLIBC_2.2.5 () from /lib64/libpthread.so.0 (gdb) where #0 0x00007f29a5156610 in sem_getvalue@@GLIBC_2.2.5 () from /lib64/libpthread.so.0 #1 0x00007f299c60e7bb in semlock_getvalue (self=0x7f299a95e2b0, _unused_ignored=0x0) at /home/haypo/prog/python/master/Modules/_multiprocessing/semaphore.c:541 #2 0x0000000000434537 in _PyMethodDef_RawFastCallKeywords (method=0x7f299c8102e0 <semlock_methods+192>, self=<_multiprocessing.SemLock at remote 0x7f299a95e2b0>, args=0x7f299c5f47e8, nargs=0, kwnames=0x0) at Objects/call.c:629 #3 0x0000000000607aff in _PyMethodDescr_FastCallKeywords (descrobj=<method_descriptor at remote 0x7f299ca42520>, args=0x7f299c5f47e0, nargs=1, kwnames=0x0) at Objects/descrobject.c:288 #4 0x0000000000512f92 in call_function (pp_stack=0x7ffd3591f730, oparg=1, kwnames=0x0) at Python/ceval.c:4595 (...) (gdb) py-bt Traceback (most recent call first): File "/home/haypo/prog/python/master/Lib/multiprocessing/synchronize.py", line 170, in __repr__ elif self._semlock._get_value() == 1: File "/home/haypo/prog/python/master/test_lock_sigsegv.py", line 20, in child print("Child r_q: %r, %r, %r" % (r_q._rlock, r_q._wlock, r_q._sem), flush=True) File "/home/haypo/prog/python/master/Lib/multiprocessing/process.py", line 99, in run self._target(*self._args, **self._kwargs) File "/home/haypo/prog/python/master/Lib/multiprocessing/process.py", line 297, in _bootstrap self.run() File "/home/haypo/prog/python/master/Lib/multiprocessing/spawn.py", line 130, in _main return self._bootstrap() File "/home/haypo/prog/python/master/Lib/multiprocessing/spawn.py", line 629, in spawn_main File "<string>", line 1, in <module> ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue33196> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com