Pinta crashed when I typed Chinese in text box.
Description As the title
To Reproduce
- Open a image
- Add a text
- Type chinese
- crash
Additional Info
Version
Pinta version : 2.1.1
If you launch Pinta from the terminal, is there any crash log? A hard crash like that probably indicates an issue in the GTK libraries
@cameronwhite
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at Gtk.IMContext.Reset()
at Pinta.Tools.TextTool.OnIMCommit(System.Object, Gtk.CommitArgs)
at DynamicClass.InvokeStub_CommitHandler.Invoke(System.Object, System.Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(System.Object, IntPtr*, System.Reflection.BindingFlags)
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at System.Delegate.DynamicInvokeImpl(System.Object[])
at GLib.Signal.ClosureInvokedCB(System.Object, GLib.ClosureInvokedArgs)
at GLib.SignalClosure.MarshalCallback(IntPtr, IntPtr, UInt32, IntPtr, IntPtr, IntPtr)
at GLib.Application.Run(System.String, System.String[])
at Pinta.MainClass.Main(System.String[])
fish: Job 1, 'pinta > log' terminated by signal SIGABRT (Abort)
Thanks, it looks like there is some infinite recursion where resetting the input method context triggers another commit of the text.
Got the same issue on macOS. Inputting in Chinese or Japanese will make Pinta crashed immediately.
Thanks, I could reproduce this on macOS with the Chinese input method.
@Dangerise - would you be able to test the latest master branch (commit 3b385de) to see if it also fixes the crash on your platform?
@cameronwhite seems to be fixed
Great, thanks for confirming!