[Mono-list] MonoDevelop causing SIGSEV on hardened

Paul Sebastian Ziegler psz at observed.de
Sat Aug 12 08:58:54 EDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi list,

I have been trying to solve this on my own for about three month now,
but I have failed. I know that it is my own "fault" to be on a hardened
system, but maybe someone else knows this error and can help me out. I
have checked through the list, forums and the web without finding
anything useful.

I am running a Gentoo-box which is hardened. This means that libc, gcc
and some other packages are compiled with SSP
(stack-smashing-protection) and PIE (position-independent-executable).
Also the kernel has patches for GRSEC and PAX applied.
This is known to cause some trouble with several applications, however
with the exception of MonoDevelop I was able to solve them all.

Let me get to the point: When I try to run MonoDevelop I get a SIGSEV.
The results are the same whether I run the monodevelop-script or
directly start the assembly. This is my error and stacktrace:


-
-------------------------------------------------------------------------------------------

tatsumori at localhost /usr/lib/monodevelop/bin $ mono --debug MonoDevelop.exe

(MonoDevelop:10598): Gtk-WARNING **: gtk_widget_size_allocate(): attempt
to allocate widget with width 432 and height -23

(MonoDevelop:10598): Gtk-WARNING **: gtk_widget_size_allocate(): attempt
to allocate widget with width 432 and height -23

=================================================================
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.
=================================================================

Stacktrace:

in (wrapper managed-to-native) Gtk.Application:gtk_main_iteration_do
(bool) <0x4>
in (wrapper managed-to-native) Gtk.Application:gtk_main_iteration_do
(bool) <0xffffffe4>
in Gtk.Application:RunIteration (bool) <0xc>
in MonoDevelop.Ide.Gui.Dialogs.SplashScreenForm:RunMainLoop () <0xe>
in MonoDevelop.Ide.Gui.Dialogs.SplashScreenForm:SetProgress (double) <0x22>
in
MonoDevelop.Ide.Gui.Dialogs.SplashScreenForm:MonoDevelop.Core.IProgressMonitor.EndTask
() <0x32>
in MonoDevelop.Ide.Gui.IdeApp:Initialize
(MonoDevelop.Core.IProgressMonitor) <0x660>
in MonoDevelop.Ide.Gui.IdeStartup:Run (string[]) <0x8ad>
in MonoDevelop.Core.AddIns.AddInService:StartApplication
(string,string[]) <0x169>
in MonoDevelop.Startup.SharpDevelopMain:Main (string[]) <0x39>
in (wrapper runtime-invoke) System.Object:runtime_invoke_int_string[]
(object,intptr,intptr,intptr) <0xc8c62ac2>

Native stacktrace:

        mono(mono_handle_native_sigsegv+0xf6) [0x801401d6]
        mono [0x8012857a]
        /lib/tls/libpthread.so.0 [0xb7e92970]
        /usr/lib/mozilla/components/libwidget_gtk2.so [0xb18897e5]
        /usr/lib/mozilla/components/libwidget_gtk2.so [0xb188b9fb]
        /usr/lib/libgtk-x11-2.0.so.0 [0xb62152cd]
        /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x14b) [0xb5dbf6bb]
        /usr/lib/libgobject-2.0.so.0 [0xb5dd9239]
        /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x65a)
[0xb5dda41a]
        /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x42) [0xb5ddaa02]
        /usr/lib/libgtk-x11-2.0.so.0 [0xb63435d4]
        /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_send_expose+0xe1)
[0xb6343871]
        /usr/lib/libgtk-x11-2.0.so.0(gtk_main_do_event+0x3bf) [0xb621362f]
        /usr/lib/libgdk-x11-2.0.so.0 [0xb6056660]

/usr/lib/libgdk-x11-2.0.so.0(gdk_window_process_all_updates+0x98)
[0xb6056748]
        /usr/lib/libgtk-x11-2.0.so.0 [0xb615fb87]
        /usr/lib/libglib-2.0.so.0 [0xb7eded3c]
        /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x20b)
[0xb7edafeb]
        /usr/lib/libglib-2.0.so.0 [0xb7edcd05]
        /usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x78)
[0xb7edd1d8]
        /usr/lib/libgtk-x11-2.0.so.0(gtk_main_iteration_do+0x3c)
[0xb621175c]
        [0xb67636a4]
        [0xb6763655]
        [0xb6763587]
        [0xb6766b1b]
        [0xb676691b]
        [0xb4794c91]
        [0xb6c2d5e6]
        [0xb6e09082]
        [0xb74c5932]
        [0xb74c5874]
        mono [0x8012830b]
        mono(mono_runtime_invoke+0x46) [0x800a0b56]
        mono(mono_runtime_exec_main+0x16f) [0x800a54df]
        mono(mono_runtime_run_main+0x1cf) [0x800a572f]
        mono(mono_jit_exec+0xbb) [0x8001e74b]
        mono(mono_main+0x1199) [0x8001f989]
        mono(main+0x3a) [0x8001e17a]
        /lib/tls/libc.so.6(__libc_start_main+0xd4) [0xb7d4ff34]
        mono [0x8001e061]

-
---------------------------------------------------------------------------------------------------

Getting weird results with PAX is casual. However this is what I get
AFTER disabling all protections so it shouldn't interfere with PAX or
GRSEC. (To make sure I tried running it with a vanilla-kernel. Same
results there. Also I downloaded the official binary from the web to
make sure that there was no problem with the way my modified GCC treats
the sourcecode. It however produced the same results as above. Therefore
I do not think that it is a problem in the kernel, the binary or the
assembly. The only thing that remained for me was my libc so I replaced
it with a vanilla one. This didn't change anything though.

I tested this on two different computers. Even though I disabled all
protections I still believe it has something to do with enhanced
security-mechanisms since MonoDevelop runs just fine on my plain fedora-box.

Also interesting is the fact that the mono-runtime itself runs just fine
with every other mono-application I have. The only thing that gives me a
SIGSEV is MonoDevelop.


Maybe someone else has had this problem before or is better in reading
stacktraces then I am. Any help on what is actually causing the problem
and ideas on how it could be solved would be greatly appreciated.


Many thanks in advance,
Paul

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFE3dCNaHrXRd80sY8RArAyAKCUt8mtvaPRqa/voqO78aGoz+KCEACg0APK
VsmEoEpr656H7ZjpBFIH4oU=
=JehC
-----END PGP SIGNATURE-----


More information about the Mono-list mailing list