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

Monitor process crashes occasionally with SIGSEGV when closing terminal with Ctrl+D #1092

Closed
ghost opened this issue Aug 24, 2017 · 19 comments
Closed
Labels

Comments

@ghost
Copy link

ghost commented Aug 24, 2017

Hi,
I experienced this 2 times only in 4 days with Tilix 1.6.5 build from master (to test tabs implementation).
OS : openSUSE Leap 42.3
VTE : 0.44
GTK version : 3.20.10
No Tilix special features

When closing a terminal with Ctrl + D, the whole Tilix window (and app) crashes. It does not happened all the time.

sudo coredumpctl gdb

provides the following output:

           PID: 8350 (tilix)
           UID: 1000 (sogal)
           GID: 100 (users)
        Signal: 11 (SEGV)
     Timestamp: jeu. 2017-08-24 14:53:19 CEST (1min 4s ago)
  Command Line: /usr/bin/tilix --gapplication-service
    Executable: /usr/bin/tilix
 Control Group: /user.slice/user-1000.slice/session-1.scope
          Unit: session-1.scope
         Slice: user-1000.slice
       Session: 1
     Owner UID: 1000 (sogal)
       Boot ID: 7e90d696526144919b89a8220144dfd5
    Machine ID: 15188e96e4446a49ca9c5d0e581b1d63
      Hostname: host
      Coredump: /var/lib/systemd/coredump/core.tilix.1000.7e90d696526144919b89a8220144dfd5.8350.1503579199000000.xz
       Message: Process 8350 (tilix) of user 1000 dumped core.

GNU gdb (GDB; openSUSE Leap 42.3) 8.0
[...]
[New LWP 8350]
[New LWP 8353]
[New LWP 8352]
[New LWP 8355]
[New LWP 8351]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/bin/tilix --gapplication-service'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000000c9483a in gio.SimpleAction.SimpleAction.callBackActivateDestroy(gio.SimpleAction.SimpleAction.OnActivateDelegateWrapper, gtkc.gobjecttypes.GClosure*) ()
[Current thread is 1 (Thread 0x7f8146a765c0 (LWP 8350))]

I have rebuild Tilix with debug symbols so I'll be able to provide more detailed output next time it happens.
Regards.

@gnunn1 gnunn1 added the bug label Aug 24, 2017
@gnunn1
Copy link
Owner

gnunn1 commented Aug 24, 2017

Thanks for reporting this, if you can get a backtrace in gdb that would be awesome.

@ghost
Copy link
Author

ghost commented Aug 24, 2017

Here is the output of (gdb) bt full

#0  0x0000000000c9483a in gio.SimpleAction.SimpleAction.callBackActivateDestroy(gio.SimpleAction.SimpleAction.OnActivateDelegateWrapper, gtkc.gobjecttypes.GClosure*) ()
#1  0x00007f8144de107c in g_closure_unref () at /usr/lib64/libgobject-2.0.so.0
#2  0x00007f8144df968e in g_signal_handlers_destroy () at /usr/lib64/libgobject-2.0.so.0
#3  0x00007f8144de5d1d in  () at /usr/lib64/libgobject-2.0.so.0
#4  0x00007f8144de60e3 in g_object_unref () at /usr/lib64/libgobject-2.0.so.0
#5  0x00007f8144afbb32 in  () at /usr/lib64/libglib-2.0.so.0
#6  0x00007f8144afc45a in g_hash_table_unref () at /usr/lib64/libglib-2.0.so.0
#7  0x00007f813f58cfa6 in  () at /usr/lib64/libgio-2.0.so.0
#8  0x00007f8144de6171 in g_object_unref () at /usr/lib64/libgobject-2.0.so.0
#9  0x00007f813d0bf17d in  () at /usr/lib64/libgtk-3.so.0
#10 0x00007f8144afbb32 in  () at /usr/lib64/libglib-2.0.so.0
#11 0x00007f8144afc45a in g_hash_table_unref () at /usr/lib64/libglib-2.0.so.0
#12 0x00007f813d0bf73a in  () at /usr/lib64/libgtk-3.so.0
#13 0x00007f8144de6171 in g_object_unref () at /usr/lib64/libgobject-2.0.so.0
#14 0x00007f813d32bac4 in  () at /usr/lib64/libgtk-3.so.0
#15 0x00007f8144de7e88 in g_object_run_dispose () at /usr/lib64/libgobject-2.0.so.0
#16 0x0000000000d46f69 in gtk.Widget.Widget.destroy() ()
#17 0x0000000000c03865 in gx.tilix.session.Session.closeTerminal(gx.tilix.terminal.terminal.Terminal) ()
#18 0x0000000000c03871 in gx.tilix.session.Session.onTerminalClose(gx.tilix.terminal.terminal.Terminal) ()
#19 0x0000000000be3cff in gx.tilix.common.GenericEvent!(gx.tilix.terminal.terminal.Terminal).GenericEvent.__mixin1.emit(gx.tilix.terminal.terminal.Terminal) ()
#20 0x0000000000c1aede in gx.tilix.terminal.terminal.Terminal.notifyTerminalClose() ()
#21 0x0000000000c1c0ae in gx.tilix.terminal.terminal.Terminal.onTerminalChildExited(int, vte.Terminal.Terminal) ()
#22 0x0000000000c40a80 in vte.Terminal.Terminal.callBackChildExited(vtec.vtetypes.VteTerminal*, int, vte.Terminal.Terminal.OnChildExitedDelegateWrapper) ()
#23 0x00007f8144de3b61 in g_cclosure_marshal_VOID(int0_t, void) () at /usr/lib64/libgobject-2.0.so.0
#24 0x00007f8144de1b37 in  () at /usr/lib64/libgobject-2.0.so.0
#25 0x00007f8144dfa918 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#26 0x00007f8144dfb592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#27 0x00007f813c6f1308 in  () at /usr/lib64/libvte-2.91.so.0
#28 0x00007f813c6f1351 in  () at /usr/lib64/libvte-2.91.so.0
#29 0x00007f8144b09de4 in  () at /usr/lib64/libglib-2.0.so.0
#30 0x00007f8144b0d015 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#31 0x00007f8144b0d388 in  () at /usr/lib64/libglib-2.0.so.0
#32 0x00007f8144b0d42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#33 0x00007f813f588d0d in g_application_run () at /usr/lib64/libgio-2.0.so.0
#34 0x0000000000c6cffb in gio.Application.Application.run(immutable(char)[][]) ()
#35 0x0000000000b481cf in D main ()

@gnunn1
Copy link
Owner

gnunn1 commented Aug 24, 2017

Thanks, I'll have a look over the weekend.

@gnunn1
Copy link
Owner

gnunn1 commented Aug 26, 2017

Unfortunately I'm not able to reproduce this on Arch. Looking at the stack trace it looks like it is failing when calling the Destroy callback, likely the Terminal one. I don't see anything obviously wrong with it.

What D compiler and version are you using, I've had some oddities with older versions of LDC in the past.

@ghost
Copy link
Author

ghost commented Aug 28, 2017

I am using dmd 2.073. As I said, I am not able to reproduce this behavior myself each time but this is happening only since I use 1.6.5 and GtkD 3.6.6.
May it be related to an "old" version of Gtk (Leap is still using 3.20) ?

@gnunn1
Copy link
Owner

gnunn1 commented Aug 30, 2017

I have been using tilix pretty much 24/7 as I'm working on some ansible scripts and I had a couple of core dumps during that time so really need to track this down before doing a release. One thing I wonder if it is related to DMD, I've rebuilt my local instance with LDC and testing that out now.

@ghost
Copy link
Author

ghost commented Aug 31, 2017

Thanks for testing that.
I use Tilix everyday 8 to 10 hours and add several crashes like that. Yesterday it did not happened when using Ctrl+D but simply when pointing a terminal with the mouse. Here is the backtrace for this crash:

Core was generated by `/usr/bin/tilix --gapplication-service'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000000f354fe in gc.impl.conservative.gc.Gcx.smallAlloc(ubyte, ref ulong, uint) ()
[Current thread is 1 (Thread 0x7efffae545c0 (LWP 4521))]
[...]
(gdb) bt full
#0  0x0000000000f354fe in gc.impl.conservative.gc.Gcx.smallAlloc(ubyte, ref ulong, uint) ()
#1  0x0000000000f395d3 in gc.impl.conservative.gc.ConservativeGC.runLocked!(gc.impl.conservative.gc.ConservativeGC.mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), gc.impl.conservative.gc.mallocTime, gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) ()
#2  0x0000000000f32da7 in gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, const(TypeInfo)) ()
#3  0x0000000000ef78e4 in gc_qalloc ()
#4  0x0000000000f3be79 in rt.lifetime.__arrayAlloc(ulong, const(TypeInfo), const(TypeInfo)) ()
#5  0x0000000000efad36 in _d_newarrayU ()
#6  0x0000000000f259e5 in object._dup!(const(char), immutable(char))._dup(const(char)[]) ()
#7  0x0000000000f259c0 in object._trustedDup!(const(char), immutable(char))._trustedDup(const(char)[]) ()
#8  0x0000000000f25998 in object.idup!(const(char)).idup(const(char)[]) ()
#9  0x0000000000ca560d in glib.Str.Str.toString(const(char)*, ulong) ()
#10 0x0000000000c920df in gio.Settings.Settings.callBackChanged(gtkc.giotypes.GSettings*, char*, gio.Settings.Settings.OnChangedDelegateWrapper) ()
#11 0x00007efff91c2479 in g_cclosure_marshal_VOID__STRINGv () at /usr/lib64/libgobject-2.0.so.0
#12 0x00007efff91bfb37 in  () at /usr/lib64/libgobject-2.0.so.0
#13 0x00007efff91d8918 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#14 0x00007efff91d9592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#15 0x00007efff397b7fc in  () at /usr/lib64/libgio-2.0.so.0
#16 0x00007efff8c9c01d in  () at /usr/lib64/libffi.so.4
#17 0x00007efff8c9b741 in  () at /usr/lib64/libffi.so.4
#18 0x00007efff91c05a5 in g_cclosure_marshal_generic_va () at /usr/lib64/libgobject-2.0.so.0
#19 0x00007efff91bfb37 in  () at /usr/lib64/libgobject-2.0.so.0
#20 0x00007efff91d8918 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#21 0x00007efff91d9592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#22 0x00007efff397b47e in  () at /usr/lib64/libgio-2.0.so.0
#23 0x00007efff3976dba in  () at /usr/lib64/libgio-2.0.so.0
#24 0x00007efff8eec045 in g_main_context_invoke_full () at /usr/lib64/libglib-2.0.so.0
#25 0x00007efff3976ec4 in  () at /usr/lib64/libgio-2.0.so.0
#26 0x00007effec6b87d5 in  () at /usr/lib64/gio/modules/libdconfsettings.so
#27 0x00007effec6b9989 in  () at /usr/lib64/gio/modules/libdconfsettings.so
#28 0x00007effec6b834b in  () at /usr/lib64/gio/modules/libdconfsettings.so
#29 0x00007efff39778a4 in  () at /usr/lib64/libgio-2.0.so.0
#30 0x00007efff397c043 in  () at /usr/lib64/libgio-2.0.so.0
#31 0x00007efff397d403 in g_settings_set_value () at /usr/lib64/libgio-2.0.so.0
#32 0x0000000000c91852 in gio.Settings.Settings.setInt(immutable(char)[], int) ()
#33 0x0000000000baff73 in gx.tilix.appwindow.AppWindow.this(gtk.Application.Application, bool).__dgliteral8!(gtk.Widget.Widget).__dgliteral8(gtkc.gdktypes.GdkEventWindowState*, gtk.Widget.Widget) ()
#34 0x0000000000d5d40c in gtk.Widget.Widget.callBackWindowState(gtkc.gtktypes.GtkWidget*, gtkc.gdktypes.GdkEventWindowState*, gtk.Widget.Widget.OnWindowStateDelegateWrapper) ()
#35 0x00007efff15c58a5 in  () at /usr/lib64/libgtk-3.so.0
#36 0x00007efff91bf908 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#37 0x00007efff91d130d in  () at /usr/lib64/libgobject-2.0.so.0
#38 0x00007efff91d8f78 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#39 0x00007efff91d9592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#40 0x00007efff16fdf1c in  () at /usr/lib64/libgtk-3.so.0
#41 0x00007efff15c48fa in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#42 0x00007efff44eda85 in  () at /usr/lib64/libgdk-3.so.0
#43 0x00007efff4519cf2 in  () at /usr/lib64/libgdk-3.so.0
#44 0x00007efff8eeb134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#45 0x00007efff8eeb388 in  () at /usr/lib64/libglib-2.0.so.0
#46 0x00007efff8eeb42c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#47 0x00007efff3966d0d in g_application_run () at /usr/lib64/libgio-2.0.so.0
#48 0x0000000000c6cffb in gio.Application.Application.run(immutable(char)[][]) ()
#49 0x0000000000b481cf in D main ()
(gdb) Quit

I work with openSUSE Leap, which is a conservative and stable release, so I am sure that neither Gtk libs nor dmd versions have changed. My build are all made the same way through the Open Build Service which use the same virtual build environment.
The only noticeable thing is the use of GtkD version 3.6.6 (instead of 3.6.5 previously).

EDIT: I will rebuild master against GtkD 3.6.5 and see what happen.

@gnunn1
Copy link
Owner

gnunn1 commented Aug 31, 2017

Version 3.6.6 fixed a memory leak in GtkD, so what we are experiencing now is likely an issue related to certain objects (terminal, VTE and session) being properly freed.

The other change I made is to enable the process monitoring by default. While I don't see anything in the traces related to that, you could try disabling it by changing USE_PROCESS_MONITOR in constants.d to false.

I really appreciate your patience with this, I'll spend some time over the weekend digging into it as well.

@ghost
Copy link
Author

ghost commented Aug 31, 2017

You're welcome, Tilix is such a good terminal, it helps me saving a lot of time in my workflow, so if I can humbly help to make it better, I more than happy to do so.
I have used Tilix master build against GtkD 3.6.5 all afternoon, trying to stress it a lot, opening tenth of terminal, several windows, clicking everywhere in it, closing terminals by all possible means but no crashes happened so far.

@ghost
Copy link
Author

ghost commented Sep 5, 2017

Hi,
After a few days using Tilix master compiled against GtkD 3.6.5 I have not noticed these crashes anymore.

@ghost
Copy link
Author

ghost commented Sep 13, 2017

Hi,
Right now, tilix master (as of 2017-09-10) compiled against GtkD-3.6.5 for openSUSE Leap 42.3, as crashed when pointing the main window with the mouse to give it focus.
Here is the backtrace:

coredumpctl gdb                                                                                                                                                  
           PID: 7233 (tilix)
           UID: 1000 (sogal)
           GID: 100 (users)
        Signal: 11 (SEGV)
     Timestamp: mer. 2017-09-13 11:33:18 CEST (1min 50s ago)
  Command Line: /usr/bin/tilix --gapplication-service
    Executable: /usr/bin/tilix
 Control Group: /user.slice/user-1000.slice/session-1.scope
          Unit: session-1.scope
         Slice: user-1000.slice
       Session: 1
     Owner UID: 1000 (sogal)
       Boot ID: 6f52a5ea37754cfcadfa469504c82891
    Machine ID: 15188e96e4446a49ca9c5d0e581b1d63
      Hostname: linux
      Coredump: /var/lib/systemd/coredump/core.tilix.1000.6f52a5ea37754cfcadfa469504c82891.7233.1505295198000000.xz
       Message: Process 7233 (tilix) of user 1000 dumped core.

GNU gdb (GDB; openSUSE Leap 42.3) 8.0
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/tilix...Reading symbols from /usr/lib/debug/usr/bin/tilix.debug...done.
done.
[New LWP 7233]
[New LWP 7235]
[New LWP 7237]
[New LWP 7239]
[New LWP 7236]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/bin/tilix --gapplication-service'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000000f10e39 in object.opEquals(Object, Object) ()
[Current thread is 1 (Thread 0x7ffa9c51c2c0 (LWP 7233))]

(gdb) bt full
#0  0x0000000000f10e39 in object.opEquals(Object, Object) ()
#1  0x0000000000ba2fb7 in std.functional.binaryFun!("a == b", "a", "b").binaryFun!(gx.tilix.terminal.terminal.Terminal, gx.tilix.terminal.terminal.Terminal).binaryFun(ref gx.tilix.terminal.terminal.Terminal, ref gx.tilix.terminal.terminal.Terminal) ()
#2  0x0000000000ba3001 in std.algorithm.searching.countUntil!("a == b", gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal).countUntil(gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal).pred2(gx.tilix.terminal.terminal.Terminal) ()
#3  0x0000000000ba305f in std.algorithm.searching.countUntil!(std.algorithm.searching.countUntil!("a == b", gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal).countUntil(gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal).pred2(gx.tilix.terminal.terminal.Terminal), gx.tilix.terminal.terminal.Terminal[]).countUntil(gx.tilix.terminal.terminal.Terminal[]) ()
#4  0x0000000000ba2fe4 in std.algorithm.searching.countUntil!("a == b", gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal).countUntil(gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal) ()
#5  0x0000000000c49ac8 in gx.util.array.remove!(gx.tilix.terminal.terminal.Terminal).remove(ref gx.tilix.terminal.terminal.Terminal[], gx.tilix.terminal.terminal.Terminal) ()
#6  0x0000000000c20e47 in gx.tilix.session.Session.onTerminalFocusIn(gx.tilix.terminal.terminal.Terminal) ()
#7  0x0000000000c013ef in gx.tilix.common.GenericEvent!(gx.tilix.terminal.terminal.Terminal).GenericEvent.__mixin1.emit(gx.tilix.terminal.terminal.Terminal) ()
#8  0x0000000000c3af0f in gx.tilix.terminal.terminal.Terminal.terminalWidgetFocusIn(gtk.Widget.Widget) ()
#9  0x0000000000c3ae91 in gx.tilix.terminal.terminal.Terminal.onTerminalWidgetFocusIn(gdk.Event.Event, gtk.Widget.Widget) ()
#10 0x0000000000d71beb in gtk.Widget.Widget.callBackFocusInEventGeneric(gtkc.gtktypes.GtkWidget*, gtkc.gdktypes.GdkEvent*, gtk.Widget.Widget.OnFocusInEventGenericDelegateWrapper) ()
#11 0x00007ffa92c8c8a5 in  () at /usr/lib64/libgtk-3.so.0
#12 0x00007ffa9a887908 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#13 0x00007ffa9a89930d in  () at /usr/lib64/libgobject-2.0.so.0
#14 0x00007ffa9a8a0f78 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#15 0x00007ffa9a8a1592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#16 0x00007ffa92dc4f1c in  () at /usr/lib64/libgtk-3.so.0
#17 0x00007ffa92dd8431 in gtk_widget_send_focus_change () at /usr/lib64/libgtk-3.so.0
#18 0x00007ffa92dda040 in  () at /usr/lib64/libgtk-3.so.0
#19 0x00007ffa92de85ac in  () at /usr/lib64/libgtk-3.so.0
#20 0x00007ffa92de8aea in  () at /usr/lib64/libgtk-3.so.0
#21 0x00007ffa92c8c8a5 in  () at /usr/lib64/libgtk-3.so.0
#22 0x00007ffa9a887908 in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#23 0x00007ffa9a8990cb in  () at /usr/lib64/libgobject-2.0.so.0
#24 0x00007ffa9a8a0f78 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#25 0x00007ffa9a8a1592 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#26 0x00007ffa92dc4f1c in  () at /usr/lib64/libgtk-3.so.0
#27 0x00007ffa92c8b8fa in gtk_main_do_event () at /usr/lib64/libgtk-3.so.0
#28 0x00007ffa95bb4a85 in  () at /usr/lib64/libgdk-3.so.0
#29 0x00007ffa95be0cf2 in  () at /usr/lib64/libgdk-3.so.0
#30 0x00007ffa9a5b3134 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#31 0x00007ffa9a5b3388 in  () at /usr/lib64/libglib-2.0.so.0
#32 0x00007ffa9a5b342c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#33 0x00007ffa9502dd0d in g_application_run () at /usr/lib64/libgio-2.0.so.0
#34 0x0000000000c8a9db in gio.Application.Application.run(immutable(char)[][]) ()
#35 0x0000000000b65a0f in D main ()

I will try another build with GtkD-3.6.6 with process monitoring disabled as you suggested before.

@gnunn1
Copy link
Owner

gnunn1 commented Sep 13, 2017

I'm not sure what the issue is, however I just got a core dump in the process monitor so I'm going to try disabling that. Because the process monitor is multi-threaded, it's possible it's causing these random issues.

Stack trace of thread 31307:
#0  0x000055b9324c4d57 _D2gc4impl12conservative2gc3Gcx10smallAllocMFNbhKmkZPv (tilix)
#1  0x000055b9324c0cb4 _D2gc4impl12conservative2gc14ConservativeGC200__T9runLockedS79_D2gc4impl12conservative2gc14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS40_D2gc4impl12conservative2gc10mallocTimelS40_D2gc4impl12conservative2gc10numMallocslTmTkTmTxC8TypeInfoZ9runLockedMFNbKmKkKmKxC8TypeInfoZPv (tilix)
#2  0x000055b9324c3a3f _DThn16_2gc4impl12conservative2gc14ConservativeGC6qallocMFNbmkxC8TypeInfoZS4core6memory8BlkInfo_ (tilix)
#3  0x000055b9324bc030 gc_qalloc (tilix)
#4  0x000055b9324b3052 _D4core6memory2GC6qallocFNaNbmkxC8TypeInfoZS4core6memory8BlkInfo_ (tilix)
#5  0x000055b932492ac8 _d_newarrayU (tilix)
#6  0x000055b93249bc64 _aaValues (tilix)
#7  0x000055b931e95348 _D6object104__T6valuesHTOHiC2gx5tilix8terminal7monitor13ProcessStatusTOC2gx5tilix8terminal7monitor13ProcessStatusTiZ6valuesFNaNbNdOHiC2gx5tilix8terminal7monitor13ProcessStatusZAOC2gx5tilix8terminal7monitor13ProcessStatus (tilix)
#8  0x000055b931e9522d _D2gx5tilix8terminal7monitor14ProcessMonitor10fireEventsMFZb (tilix)
#9  0x000055b931f42dd9 _D2gx3gtk7threads36__T25threadsAddTimeoutDelegateTDFZbZ25threadsAddTimeoutDelegateFkDFZbZ9__lambda4MFZb (tilix)
#10 0x000055b931f42d4e _D2gx3gtk7threads99__T25invokeDelegatePointerFuncTS2gx3gtk7threads26__T15DelegatePointerTDFZbZ15DelegatePointerTiVbi0Z25invokeDelegatePointerFuncUNbPvZi (tilix)
#11 0x00007fa2d1c5f5e3 n/a (libgdk-3.so.0)
#12 0x00007fa2d49ac343 n/a (libglib-2.0.so.0)
#13 0x00007fa2d49ab8c5 g_main_context_dispatch (libglib-2.0.so.0)
#14 0x00007fa2d49abc88 n/a (libglib-2.0.so.0)
#15 0x00007fa2d49abd1c g_main_context_iteration (libglib-2.0.so.0)
#16 0x00007fa2d361072d g_application_run (libgio-2.0.so.0)
#17 0x000055b931ffd3bd _D3gio11Application11Application3runMFAAyaZi (tilix)
#18 0x000055b931f469f6 _Dmain (tilix)
#19 0x000055b9324a517f _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv (tilix)
#20 0x000055b9324a50c4 _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv (tilix)
#21 0x000055b9324a4ff0 _d_run_main (tilix)
#22 0x000055b931fb7165 main (tilix)
#23 0x00007fa2d52c7f6a __libc_start_main (libc.so.6)
#24 0x000055b931e408ba _start (tilix)

@gnunn1
Copy link
Owner

gnunn1 commented Sep 18, 2017

@sogalboogalsky Have things been stable for you since disabling the process monitor? I haven't had any issues on my end since I made that change and I have checked in a change to disable it by default.

@ghost
Copy link
Author

ghost commented Sep 18, 2017

No problem since my last post and rebuild without process monitor. But I haven't used my office computer the last two days, so I am not able to fully confirm that. So far so good but I will keep testing it during a couple of days and let you know.

@ghost
Copy link
Author

ghost commented Sep 26, 2017

After a few more days using this version (compiled without process monitor and against GtkD-3.6.6) things have been stable.
That's a pity because I find process monitor handy (I like to have app title including the name of the process running in focused terminal).

@gnunn1
Copy link
Owner

gnunn1 commented Sep 26, 2017

I'll work on bringing it back and will leave this issue open until I do, it's just good to know where the issue is coming from. I likely won't get too it though until after the next release as I've been postponing it until this issue is resolved.

@gnunn1 gnunn1 changed the title Tilix 1.6.5 (master) crashes with SIGSEGV when closing terminal with Ctrl+D Monitor process crashes occasionally with SIGSEGV when closing terminal with Ctrl+D Dec 21, 2017
@gnunn1 gnunn1 closed this as completed in 02aaf7a Jul 1, 2018
@gnunn1
Copy link
Owner

gnunn1 commented Jul 1, 2018

I've been using this functionality for the last week or so and haven't noticed any issues with crashes. I suspect part of the issue may have been memory issues with GtkD as there was a period of time where you run into some once in a blue moon issues.

However I'm reluctant to mainstream it just yet without more people trying it which won't happen at the moment unless as it's hidden behind a compile switch. In order to move things forward I have added a new command flag, --process-monitor that will enable this functionality allowing people to play with it and report bugs against it.

In order to activate this functionality, the flag must be included the first time you run tilix because the monitoring happens across all instances. If you do not enable the command line flag but use the process variable in the title it will report "Not Enabled". I debated about hiding the variable when the flag is disabled but wanted to encourage people to try it out.

Please do let me know if there are any issues with it. Thanks to @s4n-gt for their work on this as well, sorry it took so long for me to get back to it.

@sjpp
Copy link

sjpp commented Jul 2, 2018

Hi,
Thanks a lot for your work on it.
I will package the master branch for openSUSE Leap and Tumbleweed and try Tilix with the flag enabled on both of them.

@gnunn1
Copy link
Owner

gnunn1 commented Jul 21, 2018

Note I've changed it to a hidden dconf setting instead of a command line switch, the cli switch was painful to deal with when using desktop files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants