使用Momo频繁使SIGABRT使控制台崩溃

时间:2019-01-14 22:16:41

标签: c# linux ubuntu mono

我看到我代码之外的Mono控制台应用程序中经常发生SIGABRT崩溃。

我搜索堆栈溢出,发现一个类似的问题(已满3年),被标记为已解决,但是我看到的是几乎相同的东西。这个问题是Intermittent SIGSEV (segfault), SIGABORT and process hangs in C# code using Mono

环境:

Ubuntu 16.04.5 LTS
Linux 4.4.0-137-generic
X64 Architecture

我遇到以下错误:

 * Assertion: should not be reached at sgen-scan-object.h:101

 Stacktrace:
at <unknown> <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_gc_alloc_vector (intptr,intptr,intptr) <0xffffffff>
at (wrapper alloc) object.AllocVector (intptr,intptr) <0xffffffff>
at Newtonsoft.Json.Utilities.BufferUtils.RentBuffer (Newtonsoft.Json.IArrayPool`1<char>,int) <0x0002c>
at Newtonsoft.Json.JsonTextReader.EnsureBuffer () <0x0002b>
at Newtonsoft.Json.JsonTextReader.Read () <0x00017>
at Newtonsoft.Json.JsonReader.ReadAndMoveToContent () <0x00013>
at Newtonsoft.Json.JsonReader.ReadForType (Newtonsoft.Json.Serialization.JsonContract,bool) <0x0007b>
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader,System.Type,bool) <0x000d7>
at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader,System.Type) <0x0015f>
at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader,System.Type) <0x0001b>
at Newtonsoft.Json.JsonConvert.DeserializeObject (string,System.Type,Newtonsoft.Json.JsonSerializerSettings) <0x000eb>
at Newtonsoft.Json.JsonConvert.DeserializeObject<TResult_REF> (string,Newtonsoft.Json.JsonSerializerSettings) <0x0002f>
at Newtonsoft.Json.JsonConvert.DeserializeObject<TResult_REF> (string) <0x00027>
at Oxygen.xfer.GetFromJSON (string) <0x0001b>
at Oxygen.MyServiceClient.Proceed () <0x00213>
at Oxygen.IndexerEngine.IndexProcess () <0x00113>
at Oxygen.IndexerEngine.<.ctor>b__7_1 () <0x0000f>
at System.Threading.Tasks.Task.InnerInvoke () <0x0004f>
at System.Threading.Tasks.Task.Execute () <0x00055>
at System.Threading.Tasks.Task.ExecutionContextCallback (object) <0x00055>
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x0016e>
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) <0x00020>
at System.Threading.Tasks.Task.ExecuteWithThreadLocal (System.Threading.Tasks.Task&) <0x00116>
at System.Threading.Tasks.Task.ExecuteEntry (bool) <0x000ee>
at System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () <0x0000e>
at System.Threading.ThreadPoolWorkQueue.Dispatch () <0x001d6>
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () <0x00008>
at (wrapper runtime-invoke) <Module>.runtime_invoke_bool (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:
/usr/bin/cli() [0x49ff2f]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390) [0x7f8964be1390]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38) [0x7f896483b428]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x16a) [0x7f896483d02a]
/usr/bin/cli() [0x630409]
/usr/bin/cli() [0x63069c]
/usr/bin/cli() [0x630833]
/usr/bin/cli() [0x5fb526]
/usr/bin/cli() [0x5e8f81]
/usr/bin/cli() [0x5ea974]
/usr/bin/cli() [0x5eca95]
/usr/bin/cli() [0x5dfe72]
/usr/bin/cli() [0x5ce716]
[0x402e573e]

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

我不确定如何进行。

GetFromJson代码非常简单:


        public static xfer GetFromJSON(string json)
        {
            return JsonConvert.DeserializeObject(json);
        }

这是失败之前的300至400次呼叫。关联的库用在另一个控制台应用程序中,该应用程序无数次调用该应用程序。这两个应用程序之间的主要区别在于,一个没有事件的应用程序使用CPU执行计算,而一个有问题的应用程序使用通过OpenCL访问的NVidia GPU。

0 个答案:

没有答案