C# C、 Mono 2.6.7-在TreeView上悬停时的SIGSEGV

C# C、 Mono 2.6.7-在TreeView上悬停时的SIGSEGV,c#,mono,centos,gtk#,segmentation-fault,C#,Mono,Centos,Gtk#,Segmentation Fault,环境: Mono 2.6.7 CentOS 5.4,32位 我有一个Gtk窗口,带有各种对接面板MonoDevelop.Components.docking。在选项卡式面板组中,一个面板在非常特定的情况下使用SIGSEGV使应用程序崩溃: 单击另一个选项卡以查看选项卡组中除此之外的面板 单击返回问题面板 在面板中显示的TreeView的第一行上移动鼠标 仅当至少有一行包含数据时,并且仅当在第一行数据上移动鼠标时,才会发生这种情况 以下是应用程序崩溃时的堆栈跟踪: Stacktrace: a

环境: Mono 2.6.7 CentOS 5.4,32位

我有一个Gtk窗口,带有各种对接面板MonoDevelop.Components.docking。在选项卡式面板组中,一个面板在非常特定的情况下使用SIGSEGV使应用程序崩溃:

单击另一个选项卡以查看选项卡组中除此之外的面板 单击返回问题面板 在面板中显示的TreeView的第一行上移动鼠标 仅当至少有一行包含数据时,并且仅当在第一行数据上移动鼠标时,才会发生这种情况 以下是应用程序崩溃时的堆栈跟踪:

Stacktrace:

  at (wrapper managed-to-native) Gtk.Application.gtk_main () <0x00004>
  at (wrapper managed-to-native) Gtk.Application.gtk_main () <0x00004>
  at Gtk.Application.Run () <0x0000a>
  at MyApp.MainClass.Main (string[]) <0x002ad>
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0x00043>

Native stacktrace:
mono [0x80d93bb]
mono [0x8114180]
[0xdb6440]
/mydir/deps/lib/libcairo.so.2 [0x1f47178]
/mydir/deps/lib/libcairo.so.2 [0x1f432e0]
/mydir/deps/lib/libcairo.so.2 [0x1f4354d]
/mydir/deps/lib/libcairo.so.2 [0x1f17396]
/mydir/deps/lib/libcairo.so.2 [0x1f1989d]
/mydir/deps/lib/libcairo.so.2 [0x1f19cc1]
/mydir/deps/lib/libcairo.so.2 [0x1f164e6]
/mydir/deps/lib/libcairo.so.2 [0x1f06cb3]
/mydir/deps/lib/libcairo.so.2(cairo_fill_preserve+0x2c) [0x1eff00c]
/mydir/deps/lib/libcairo.so.2(cairo_fill+0x12) [0x1eff032]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x345cc16]
/mydir/deps/lib/libgtk-x11-2.0.so.0(gtk_cell_renderer_render+0x92) [0x34596b2]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x363594d]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x3636689]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x3632e88]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x352804e]
/mydir/deps/lib/libgobject-2.0.so.0 [0x1ec5729]
/mydir/deps/lib/libgobject-2.0.so.0(g_closure_invoke+0x123) [0x1ec6f33]
/mydir/deps/lib/libgobject-2.0.so.0 [0x1ed80c1]
/mydir/deps/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x68f) [0x1ed8d7f]
/mydir/deps/lib/libgobject-2.0.so.0(g_signal_emit+0x29) [0x1ed9179]
/mydir/deps/lib/libgtk-x11-2.0.so.0 [0x3645f78]
/mydir/deps/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x507) [0x35225e7]
/mydir/deps/lib/libgdk-x11-2.0.so.0 [0xcfb38b]
/mydir/deps/lib/libgdk-x11-2.0.so.0(gdk_window_process_all_updates+0xf8) [0xcfba38]
/mydir/deps/lib/libgdk-x11-2.0.so.0 [0xcfba5b]
/mydir/deps/lib/libgdk-x11-2.0.so.0 [0xce1a18]
/mydir/deps/lib/libglib-2.0.so.0 [0x26ba01]
/mydir/deps/lib/libglib-2.0.so.0(g_main_context_dispatch+0x17c) [0x26d5bc]
/mydir/deps/lib/libglib-2.0.so.0 [0x270a26]
/mydir/deps/lib/libglib-2.0.so.0(g_main_loop_run+0x1a9) [0x270dd9]
/mydir/deps/lib/libgtk-x11-2.0.so.0(gtk_main+0xb4) [0x3522844]
[0x609524e]
[0x6095213]
[0xcc0766]
[0xd5e88c]
mono [0x8062076]
mono(mono_runtime_invoke+0x40) [0x8158b20]
mono(mono_runtime_exec_main+0xea) [0x815ed0a]
mono(mono_runtime_run_main+0x1ba) [0x81602fa]
mono(mono_main+0x1670) [0x80b5f80]
mono [0x80594a1]
/lib/libc.so.6(__libc_start_main+0xdc) [0x49ee9c]
mono(g_ascii_strcasecmp+0x95) [0x80593b1]

Debug info from gdb:

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================
很难给出任何代码,因为它是我的雇主专有的,而且代码相当混乱。我只是想知道是否有人对一些可能导致这种情况的一般情况有一些建议,我可以寻找

另外,请不要只是回复使用更高版本的Mono等。这是我的工作环境。如果有一些单声道bug与此相关,这将是有用的信息

注意,我确实在这里发现了一个问题:, 其中提到了处理附加事件的本地UI组件。我在我的代码中做了一次搜索,只有两个弹出菜单项是带有事件的本地UI组件。但是,在这种情况下,代码不会被命中,因为我没有触发菜单右键单击


谢谢。

Mono 2.6.7有点老了,你能用稳定的Mono 2.10.6进行测试吗?

你说过,请不要只是回复使用更高版本的Mono,我只是不明白你是怎么做到的。也许是因为GtkSharp过时了,而且有马车,也许是因为Mono。我们只是不知道是什么原因造成的错误张贴


话虽如此,我会在一个窗口上编写一个UI测试用例,然后尝试将问题隔离在专有应用程序之外。通过这种方式,如果问题仍然存在,您可以在此处发布代码,以便人们更容易地查明问题,甚至帮助针对Mono或GtkSharp等进行错误归档。

问题恰好是我们使用的cairo软件包中的错误。我们升级到了一个新版本-问题解决了。该bug与在单元格中渲染PIXBUF有关


对于其他两篇文章,是的,使用更新版本的Mono会很好。然而,在支持遗留项目的同时,我们在时间/资金限制下工作。希望明年我们能努力升级Mono并测试所有功能。

当然,我想尝试新的Mono,但这是一个庞大的公司项目,不是个人项目。当前合同上没有时间/资金来领导这项工作;因此,我尽我所能解决问题。