Closed jgehrcke closed 1 year ago
I have infrequently seen a segmentation fault in the test test_gipc.py::TestComm::test_onewriter_two_readers on the following platform:
test_gipc.py::TestComm::test_onewriter_two_readers
Reproduced with this command, and got a relevant strace output:
$ for RUNIDX in $(seq -w 00 99); do echo $RUNIDX; strace -o strace.out py.test --cov-report term --cov-report html --cov gipc -v -k TestComm || break; done
Output from bad test run:
[...] platform linux2 -- Python 2.7.12[pypy-5.6.0-final], pytest-3.0.5, py-1.4.32, pluggy-0.4.0 -- /home/jp/.pyenv/versions/pypy-5.6.0/envs/venvpypy560-gevent120-gipc/bin/python cachedir: ../.cache rootdir: /home/jp/dev/gipc, inifile: plugins: cov-2.4.0 collected 78 items test_gipc.py::TestComm::test_singlemsg_short_bin PASSED test_gipc.py::TestComm::test_singlemsg_short_list PASSED test_gipc.py::TestComm::test_singlemsg_short_list_commontypes PASSED test_gipc.py::TestComm::test_singlemsg_long_bin PASSED test_gipc.py::TestComm::test_singlemsg_long_list PASSED test_gipc.py::TestComm::test_singlemsg_between_greenlets PASSED test_gipc.py::TestComm::test_onewriter_two_readers Segmentation fault (core dumped)
Relevant strace output from said run:
$ tail -n 50 strace.out read(100, 0x7f911f8c0bc0, 35928) = -1 EAGAIN (Resource temporarily unavailable) getpid() = 26510 epoll_ctl(103, EPOLL_CTL_ADD, 100, {EPOLLIN, {u32=100, u64=21474836580}}) = -1 EEXIST (File exists) epoll_wait(103, [{EPOLLOUT, {u32=102, u64=17179869286}}], 64, 59743) = 1 write(102, "K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1"..., 35928) = 35928 getpid() = 26510 write(102, "\0\36\214T\200\2]q\1(K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1"..., 2002008) = 28672 write(102, "K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1"..., 1973336) = -1 EAGAIN (Resource temporarily unavailable) getpid() = 26510 epoll_ctl(103, EPOLL_CTL_ADD, 102, {EPOLLOUT, {u32=102, u64=21474836582}}) = -1 EEXIST (File exists) epoll_wait(103, [{EPOLLIN, {u32=100, u64=17179869284}}], 64, 59743) = 1 read(100, "K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1K\1"..., 35928) = 35928 brk(NULL) = 0x76ff000 brk(0x77b5000) = 0x77b5000 brk(NULL) = 0x77b5000 brk(0x7884000) = 0x7884000 brk(NULL) = 0x7884000 brk(0x796d000) = 0x796d000 brk(NULL) = 0x796d000 brk(0x79ed000) = 0x79ed000 brk(NULL) = 0x79ed000 brk(0x7af4000) = 0x7af4000 brk(NULL) = 0x7af4000 brk(0x7c1f000) = 0x7c1f000 brk(NULL) = 0x7c1f000 brk(0x7c9f000) = 0x7c9f000 brk(NULL) = 0x7c9f000 brk(0x7df2000) = 0x7df2000 brk(NULL) = 0x7df2000 brk(0x7e72000) = 0x7e72000 brk(NULL) = 0x7e72000 brk(0x7ff0000) = 0x7ff0000 brk(NULL) = 0x7ff0000 brk(0x819f000) = 0x819f000 brk(NULL) = 0x819f000 brk(0x821f000) = 0x821f000 brk(NULL) = 0x821f000 brk(0x8405000) = 0x8405000 brk(NULL) = 0x8405000 brk(0x8485000) = 0x8485000 brk(NULL) = 0x8485000 brk(0x86a8000) = 0x86a8000 brk(NULL) = 0x86a8000 brk(0x8728000) = 0x8728000 brk(NULL) = 0x8728000 brk(0x8991000) = 0x8991000 brk(NULL) = 0x8991000 brk(0x8a11000) = 0x8a11000 --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x7f91283c0300} --- +++ killed by SIGSEGV (core dumped) +++
I could not yet reproduce this without --cov-report term --cov-report html --cov gipc. But that might just be coincidence.
--cov-report term --cov-report html --cov gipc
This might not be an issue anymore. Leaving this open anyway.
I have infrequently seen a segmentation fault in the test
test_gipc.py::TestComm::test_onewriter_two_readers
on the following platform:Reproduced with this command, and got a relevant strace output:
Output from bad test run:
Relevant strace output from said run:
I could not yet reproduce this without
--cov-report term --cov-report html --cov gipc
. But that might just be coincidence.