PC Yin
PC Yin

Reputation: 121

Mono SIGSEGV crash without stacktrace information

I have a machine learning algorithm (stochastic gradient descent) implemented in C#, which involves 100 iterations over ~10GB of data cached in memory. The program runs fine under windows, but when deployed to ubuntu 14.04.2 LTS running mono 3.12.1, The program RANDOMLY crashed after ~30 iterations (which takes about one day), with the following outputs:

Stacktrace:


Native stacktrace:

mono() [0x4accac]
mono() [0x50451f]
mono() [0x42a7c7]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7f678b0d1cb0]
mono() [0x61c48f]
mono() [0x5cdfe6]
mono() [0x5dd95a]
mono() [0x5dd9bc]
mono() [0x5d0ff4]
mono() [0x5c7458]
mono() [0x5c765f]
mono() [0x5c8d6a]
mono() [0x5c980a]
mono() [0x5ccc15]
mono() [0x5d2ab0]
mono() [0x5dfb70]
mono() [0x5dffeb]
[0x4196f62e]
Debug info from gdb:

Could not attach to process.  If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf ptrace: Operation not permitted.
No threads.

=================================================================
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.
=================================================================
  1. how can I get a more detailed information (e.g., actual line of the crash) about the stacktrace, in order to pinpoint the cause of the crash?

  2. how can I get detailed debug info from gdb (instead of could not attached to process error)?

the program is run using command nohup mono MyProgram.exe &

Upvotes: 2

Views: 828

Answers (2)

knocte
knocte

Reputation: 17939

Unmanaged crashes are mono-runtime bugs, please file a ticket in https://github.com/mono/mono/issues/new with a minimal testcase of how to reproduce the problem.

Upvotes: 1

Ethan
Ethan

Reputation: 154

It's a shot in the dark but maybe you can explicitly set a larger memory limit with something like this,

MONO_GC_PARAMS max-heap-size=10G

to make sure you're not hitting some memory limit.

Upvotes: 0

Related Questions