应用程序立即崩溃,无一例外地或日志(看起来像xamarin /单声道错误)

这是一个奇怪的情况在这里:),我已经在我的片段中实现了这个代码,以扫描multithread environment TCP Ports ,它crash when debugging ,有时crash in release mode也与消息:

E/art (12972): Nested signal detected - original signal being reported

F/art (12972): art/runtime/fault_handler.cc:117] Check failed: !initialized_

试图设置目标Android to 23不起作用。

试过运行adb shell setprop debug.mono.env MONO_DEBUG=soft-breakpoints没有工作的adb shell setprop debug.mono.env MONO_DEBUG=soft-breakpoints

试图使用不同的Android API's Versions进行编译

任何想法为什么这是发生?

这是我的代码:

  public void start() { for (int i = 0; i < 50; i++) { Task.Run(() => RunScanTcp()); //ThreadPool.QueueUserWorkItem(RunScanTcp); //Thread thread = new Thread(new ThreadStart(RunScanTcp)); //thread.Start(); } } public void RunScanTcp() { while (abort != true) { port = port + 1; Log.Info("PORT SCANNER", port.ToString()); } } public class PortList { private int start; private int stop; private int ports; private static readonly object _syncRoot = new object(); public PortList(int starts, int stops) { start = starts; stop = stops; ports = start; } public bool MorePorts() { lock (_syncRoot) { return (stop - ports) >= 0; } } public int NextPort() { lock (_syncRoot) { if (MorePorts()) { return ports++; } return -1; } } } 

我编译使用:

Android Version (Android 7.1 Nougat)

最低Android版本:

Android 4.1 (API Level 16 - Jelly Bean)

目标Android版本:

Compile Using SDK Version

更新:

Visual Studio Update 15.2 (26430.12)Xamarin 4.5.0.47630/05/2017 (dd / mm / yyyy)之后,应用程序crashed connected to debuggercrashed了。

这里是debugging器输出:

 referenceTable GDEF length=814 1 referenceTable GSUB length=11364 1 referenceTable GPOS length=47302 1 referenceTable head length=54 1 referenceTable GDEF length=428 1 referenceTable GSUB length=2302 1 referenceTable GPOS length=43252 1 referenceTable head length=54 1 referenceTable GDEF length=808 1 referenceTable GSUB length=11364 1 referenceTable GPOS length=49128 1 referenceTable head length=54 1 referenceTable GDEF length=808 1 referenceTable GSUB length=11364 1 referenceTable GPOS length=47320 1 referenceTable head length=54 1 05-31 04:31:51.590 F/art (17427): art/runtime/fault_handler.cc:117] Check failed: !initialized_ 

感谢大家 …

Solutions Collecting From Web of "应用程序立即崩溃,无一例外地或日志(看起来像xamarin /单声道错误)"

正如你所描述的,它是没有你的代码的一部分工作…所以错误必须在你的代码中的某个地方。

让我们来看看它。

 public void start() { for (int i = 0; i < 50; i++) { Task.Run(() => RunScanTcp()); } } public void RunScanTcp() { while (abort != true) { port = port + 1; Log.Info("PORT SCANNER", port.ToString()); } } 

start方法中,你启动了50个任务,而不是await其中的任何一个 – 也就是说,所有的任务可能并行运行(至less绝对有些任务试图同时访问port )。

这些任务执行的是访问必须是包含类的字段的port的方法。

从多个任务/线程访问共享字段绝不是没有锁的好主意。

尝试使用下面的代码(如果您真的需要并行任务出于某种原因)。

 public class YourClass { private bool abort; private int port; private object portLock = new object(); public void start() { for (int i = 0; i < 50; i++) { Task.Run(() => RunScanTcp()); } } public void RunScanTcp() { while (abort != true && this.port < int.MaxValue) { lock (this.portLock) { port = port + 1; Log.Info("PORT SCANNER", port.ToString()); } } } } 

可能更好的方法是只使用一个任务,并在某处await

 public class YourClass { private bool abort; private int port; private object portLock = new object(); public Task start() { return Task.Run(() => RunScanTcp()); } public void RunScanTcp() { lock (this.portLock) { while (abort != true && this.port < int.MaxValue) { port = port + 1; Log.Info("PORT SCANNER", port.ToString()); } } } } 

如果这解决了你当前的问题,你可能想添加另一个关于如何正确地解决你实际上正在解决的问题(因为你当前的代码基本上只是增加port直到它被中止或应用程序崩溃(因为它计数高于Int32 MaxValue)

所以我遇到了像Xamarin和VS一样的问题。 事实certificate,并不是所有的错误都logging到VSdebugging控制台,但它们都在设备日志中。 那时我必须做的是在我的机器上使用仿真器,并在设备login时运行它。 并在事故发生后立即停止采伐。 在那个日志中,很明显是什么问题(在我的情况下是一个错误configuration的权限)。 希望有所帮助。

对于apk文件在其他设备上工作,而不是连接到USBdebugging,您需要发布签名的APK文件并分发,请点击下面的链接: https : //developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/ publishing_an_application / part_1 _-_ preparing_an_application_for_release /

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_2_-_signing_the_android_application_package/

这个问题似乎是在xamarin.android platform因为在上次更新后6/9/2017 Visual Studio 2017 version 15.2 (26430.13)它不会崩溃了…无论如何感谢您的时间..这个错误发生时,试图创build(n )线程数/任务…