[Mono-list] Mono too many roots set & other errors

Maxim makska at yandex.ru
Sat Aug 1 13:38:21 EDT 2009


I've upgraded mono on production server for about week ago and got trouble:
several times (up to two per day) I've found error in apache error_log file:
Too many root sets


  at (wrapper managed-to-native)
object.__icall_wrapper_mono_delegate_begin_invoke (object,intptr) <0x00048>
  at (wrapper managed-to-native)
object.__icall_wrapper_mono_delegate_begin_invoke (object,intptr)
  at (wrapper delegate-begin-invoke)
(object,System.AsyncCallback,object) <0xffffffff>
  at System.Threading.ThreadPool.QueueUserWorkItem
(System.Threading.WaitCallback,object) <0x0001f>
  at System.Threading.Timer.SchedulerThread () <0x003c7>
  at (wrapper runtime-invoke) object.runtime_invoke_void__this__
(object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

    /opt/mono/bin/mono [0x47e7a0]
    /lib64/libpthread.so.0 [0x3e3e60e4c0]
    /lib64/libc.so.6(gsignal+0x35) [0x3e3da30215]
    /lib64/libc.so.6(abort+0x110) [0x3e3da31cc0]
    /opt/mono/bin/mono [0x574553]
    /opt/mono/bin/mono [0x572fc5]
    /opt/mono/bin/mono [0x572f29]
    /opt/mono/bin/mono [0x50a18e]
    /opt/mono/bin/mono [0x4fee6c]
    /opt/mono/bin/mono [0x502ef5]
    /opt/mono/bin/mono [0x4c1083]

Debug info from gdb:

Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.

and a lots of errors after it, for example:
[Sat Aug 01 20:12:04 2009] [error] (104)Connection reset by peer:
read_data failed
[Sat Aug 01 20:12:04 2009] [error] (70014)End of file found: read_data
[Sat Aug 01 20:12:04 2009] [error] Command stream corrupted, last
command was -1
[Sat Aug 01 20:12:04 2009] [notice] child pid 17038 exit signal
Segmentation fault (11)

After it all mono applications returns no data (nagios: HTTP CRITICAL -
No data received from host).
Only restart of apache make application healthy again.

Also there are a lot of errors in error_log (almost every second), but
it seems like no relation to this crash:
[Sat Aug 01 14:12:05 2009] [crit] (13)Permission denied: Failed to
attach to existing dashboard, and removing dashboard file
'/tmp/mod_mono_dashboard_XXGLOBAL_1' failed (Operation not permitted).
Further action impossible.

How I set up mod_mono and apache (with mono 2.0.1 it works just fine. It
seems like 2.0.1 is most stable release for me) :
    LoadModule mono_module /usr/lib64/httpd/modules/mod_mono.so
    MonoAutoApplication enabled

    MonoMaxActiveRequests 70
    MonoMaxWaitingRequests 500
    MonoServerPath "/opt/mono/bin/mod-mono-server2"
    AddType application/x-asp-net .aspx
    DirectoryIndex index.aspx

For heavy loaded sites (about 20 on this server) I have separated
mod_mono server instances and vhosts like this:
<VirtualHost *:80>
    ServerName mysite.com
    AddMonoApplications mysite.com
    MonoServerPath mysite.com "/opt/mono/bin/mod-mono-server2"
    <Location />
        AddHandler mono .aspx .ascx .config .axd .asax .ashx .asmx .dll
        MonoSetServerAlias mysite.com
    MonoAutoApplication disabled
    MonoSetEnv MONO_THREADS_PER_CPU=2000
    MonoMaxActiveRequests 75
    MonoMaxWaitingRequests 200

For all other websites (for about 80) I have one instance of mod_mono
server and hosts like this, with no special mono directives (I suppose
mono auto applications work here):
<VirtualHost *:80>
    ServerName mysite.com

So could anyone give me please advice how to fix this problem?
Or how to set up mod_mono in more stable way?

All the best,
Maxim Karavaev

More information about the Mono-list mailing list