解决这个单声道本机代码的任何方法进一步崩溃?

时间:2014-12-07 12:17:15

标签: c# mono monodevelop

我有类似下面的代码,它在Mono运行时本机代码中经常是SIGSEV:

XDocument doc = myHelperFunction(...);
if(doc == null)return;
var reportBlocks = doc.Descendants ("ReportBlocks");
if(reportBlocks.Count() == 0){
  //log it
  return;
  }
int batchSize = (int)reportBlocks.Attributes("numCols").First();

我得到的信息是:

Native stacktrace:

    /usr/bin/mono() [0x4b73d8]
    /usr/bin/mono() [0x5073d8]
    /usr/bin/mono() [0x4273d8]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x10340) [0x7fb8b876b340]
    /usr/bin/mono() [0x5073d8]
    /usr/bin/mono() [0x4273d8]
    /usr/bin/mono() [0x5073d8]
    /usr/bin/mono() [0x4273d8]
    /usr/bin/mono() [0x5073d8]
    /usr/bin/mono() [0x4273d8]
    /usr/bin/mono() [0x5073d8]
    /usr/bin/mono() [0x4273d8]
    /usr/bin/mono() [0x5073d8]
    [0x41f1a660]

Debug info from gdb:

Could not attach to process. ...

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

(必须手工复制,所以0xNNN数字并不完全准确。)

我在以上所有方面都有断点。处理reportBlocks.Count()部分时,它相当可靠地崩溃。有时它通过它很好,然后触发第二个数据查询。

这一切都来自MonoDevelop。如果我用ctrl-F5运行,而不是F5,它永远不会遇到问题。如果我删除所有断点并使用F5,它也永远不会遇到问题。

如果我在上面的函数中设置了几个连续的断点,我也可以让它发生。

所以我不认为这是一个特定的LINQ调用,或类似的东西。另一方面,堆栈跟踪始终相同。

这有点像潜在的计时问题(即另一个线程在调试器中暂停一个线程时继续运行),尤其是因为pthreads是堆栈跟踪中唯一有用的信息。但我无法发现任何事情,而且我没有进一步追踪它的想法。

如果它只是一个只在设置断点时才会发生的单声道运行时错误,我不想花更多的时间在这上面!


版本:

  

=== MonoDevelop ===

     

版本4.0.12   运行时:Mono 3.2.8(Debian 3.2.8 + dfsg-4ubuntu1)(64位)GTK   2.24.23 GTK#(2.12.0.0)

     

===建立信息===

     

Git修订版:建造日期:2014-01-08 14:59:33 + 0000

使用Linux,Mint 17。

System.Xml和System.Xml.Linq都是版本4.0.0.0(虽然在linq调用上设置断点时我似乎注意到它可能是巧合。)

0 个答案:

没有答案