Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash with SIGPIPE while loading previous messages #38

Closed
DataBeaver opened this issue May 16, 2020 · 3 comments
Closed

Crash with SIGPIPE while loading previous messages #38

DataBeaver opened this issue May 16, 2020 · 3 comments
Labels
bug Something isn't working

Comments

@DataBeaver
Copy link
Contributor

I noticed that when scrolling upwards through a long channel history, Mirage crashes pretty quickly. There's no messages in the terminal but gdb reveals it to be a SIGPIPE:

Thread 7 "QPythonWorker" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x7fffd562a700 (LWP 13043)]
__GI___libc_write (nbytes=24, buf=0x7fffddec9c10, fd=41) at ../sysdeps/unix/sysv/linux/write.c:26
26      ../sysdeps/unix/sysv/linux/write.c: No such file or directory.
(gdb) bt
#0  __GI___libc_write (nbytes=24, buf=0x7fffddec9c10, fd=41) at ../sysdeps/unix/sysv/linux/write.c:26
#1  __GI___libc_write (fd=fd@entry=41, buf=buf@entry=0x7fffddec9c10, nbytes=nbytes@entry=24)
    at ../sysdeps/unix/sysv/linux/write.c:24
#2  0x00007fffd6c10620 in __pyx_f_6uvloop_4loop_8UVStream__try_write (__pyx_v_self=0x7fffcc0bb860, __pyx_v_data=<optimized out>)
    at uvloop/loop.c:87771
#3  0x00007fffd6c21d62 in __pyx_f_6uvloop_4loop_8UVStream__exec_write (__pyx_v_self=__pyx_v_self@entry=0x7fffcc0bb860)
    at uvloop/loop.c:88613
#4  0x00007fffd6c24e08 in __pyx_f_6uvloop_4loop_4Loop__exec_queued_writes (__pyx_v_self=0x7fffe0625820) at uvloop/loop.c:15829
#5  0x00007fffd6c50360 in __pyx_f_6uvloop_4loop_6Handle__run (__pyx_v_self=__pyx_v_self@entry=0x7fffd6f02670)
    at uvloop/loop.c:56458
#6  0x00007fffd6c53374 in __pyx_f_6uvloop_4loop_cb_check_callback (__pyx_v_handle=<optimized out>) at uvloop/loop.c:76086
#7  0x00007fffd6c62d61 in uv__run_check (loop=loop@entry=0x7fffe0234e40) at src/unix/loop-watcher.c:67
#8  0x00007fffd6c606dd in uv_run (loop=0x7fffe0234e40, mode=mode@entry=UV_RUN_DEFAULT) at src/unix/core.c:376
#9  0x00007fffd6c1c100 in __pyx_f_6uvloop_4loop_4Loop___run (__pyx_v_self=0x7fffe0625820, __pyx_v_mode=UV_RUN_DEFAULT)
    at uvloop/loop.c:13914
#10 0x00007fffd6c254c2 in __pyx_f_6uvloop_4loop_4Loop__run (__pyx_v_self=0x7fffe0625820, __pyx_v_mode=UV_RUN_DEFAULT)
    at uvloop/loop.c:14299
#11 0x00007fffd6b8c315 in __pyx_pf_6uvloop_4loop_4Loop_24run_forever (__pyx_v_self=0x7fffe0625820) at uvloop/loop.c:27024
#12 __pyx_pw_6uvloop_4loop_4Loop_25run_forever (__pyx_v_self=0x7fffe0625820, unused=<optimized out>) at uvloop/loop.c:26827
#13 0x00007fffebc79297 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#14 0x00007fffeba51ffd in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#15 0x00007fffeba53274 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#16 0x00007fffeba5d0eb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#17 0x00007fffebc80bab in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#18 0x00007fffebc805cc in PyVectorcall_Call () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#19 0x00007fffeba57b29 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#20 0x00007fffeba5d0eb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#21 0x00007fffeba51ffd in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#22 0x00007fffeba53274 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#23 0x00007fffeba5d0eb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#24 0x00007fffeba51ffd in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#25 0x00007fffeba53274 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#26 0x00007fffeba5d0eb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#27 0x00007fffebc80bab in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#28 0x00007fffebc805cc in PyVectorcall_Call () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#29 0x00007fffebaf23dd in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#30 0x00007fffebb57d67 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
#31 0x00007ffff5c16f27 in start_thread (arg=<optimized out>) at pthread_create.c:479
#32 0x00007ffff60442ef in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

I'm not sure if this is a bug in uvloop, the nio library or Mirage itself. Disabling uvloop fixes it, as does adding signal(SIGPIPE, SIG_IGN); at the top of main().

@mirukana
Copy link
Owner

I think I'll drop uvloop for the next release, it's already giving me headaches with impossible to catch socket.gaierror exceptions when network issues occur and I don't have the skills or will to debug its code.

@mirukana mirukana added the bug Something isn't working label May 16, 2020
@mirukana
Copy link
Owner

0.5.0 has been released, is the crash gone out of the box?

@DataBeaver
Copy link
Contributor Author

Apologies for the delay, I've had a busy few days. Version 0.5.0 does not exhibit the SIGPIPE crash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants