Skip to content
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.

Unhandeled exception? TaskCompletionSource`1[TResult].SetException #682

Closed
SHuygh opened this issue Mar 29, 2019 · 3 comments
Closed

Unhandeled exception? TaskCompletionSource`1[TResult].SetException #682

SHuygh opened this issue Mar 29, 2019 · 3 comments

Comments

@SHuygh
Copy link

SHuygh commented Mar 29, 2019

Actual Behavior

  1. Exception is thrown which causes the application to crash

Expected Behavior

Either

  1. Exception can be caught and handled
  2. Exception is not thrown

Versions

  • OS platform and version: Android 8.0.0
  • .NET Version: Xamarin
  • NuGet package version or commit ID: 3.1.1

Description

It is not clear where and when the exception is thrown. It first appeared that it would have been thrown in the ctor but no exception was caught here and the application still crashes.
Is this a bug, or are we missing where this exception should be handled.

Code

               _subscriptionClient = new SubscriptionClient(_settingsService.PrimaryOutboundEndpoint,
                                                             PrimaryOutboundTopic,
                                                             PrimaryOutboundSubscription, TokenProvider.CreateSharedAccessSignatureTokenProvider(PrimaryOutboundSasToken),
                                                             receiveMode: ReceiveMode.PeekLock,
                                                             retryPolicy: _retryPolicy);
            
        _subscriptionClient.RegisterMessageHandler(

               async (message, cancellationToken1) =>
                {
                    if (_subscriptionClient != null && !_subscriptionClient.IsClosedOrClosing)
                    {
                        await MessageHandler(message, cancellationToken1, _subscriptionClient);
                    }
                },
                new MessageHandlerOptions(LogMessageHandlerException) { AutoComplete = false, MaxConcurrentCalls = MAX_CONCURRENT_CALLS });

StackTrace

Android: 8.0.0
Android Build: R16NW
Manufacturer: samsung
Model: SM-A600FN
CrashReporter Key: 9246b0b2-7af1-4db1-99ed-980b0f207e8b
Date: undefined

Xamarin Exception Stack:
System.InvalidOperationException:
at System.Threading.Tasks.TaskCompletionSource`1[TResult].SetException (System.Exception exception) [0x00013] in :0
at Microsoft.Azure.Amqp.Transport.AmqpTransportInitiator+<>c__DisplayClass15_0.b__0 (Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs a) [0x00014] in :0
at Microsoft.Azure.Amqp.Transport.AmqpTransportInitiator.Complete (Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs args) [0x00076] in :0
at Microsoft.Azure.Amqp.Transport.AmqpTransportInitiator.OnConnectComplete (Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs args) [0x00008] in :0
at Microsoft.Azure.Amqp.Transport.TlsTransportInitiator.Complete () [0x00059] in :0
at Microsoft.Azure.Amqp.Transport.TlsTransportInitiator.HandleInnerTransportConnected (Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs innerArgs) [0x0002a] in :0
at Microsoft.Azure.Amqp.Transport.TlsTransportInitiator.OnInnerTransportConnected (Microsoft.Azure.Amqp.Transport.TransportAsyncCallbackArgs innerArgs) [0x00006] in :0
at Microsoft.Azure.Amqp.Transport.TcpTransportInitiator.Complete (System.Net.Sockets.SocketAsyncEventArgs e, System.Boolean completeSynchronously) [0x000b7] in :0
at Microsoft.Azure.Amqp.Transport.TcpTransportInitiator.OnConnectComplete (System.Object sender, System.Net.Sockets.SocketAsyncEventArgs e) [0x00026] in :0
at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted (System.Net.Sockets.SocketAsyncEventArgs e) [0x0000e] in <4c0ea12a669844598cada415d99299fd>:0
at System.Net.Sockets.SocketAsyncEventArgs.Complete () [0x00000] in <4c0ea12a669844598cada415d99299fd>:0
at System.Net.Sockets.Socket+<>c.<.cctor>b__309_3 (System.IAsyncResult ares) [0x00057] in <4c0ea12a669844598cada415d99299fd>:0
at System.Net.Sockets.SocketAsyncResult+<>c.b__27_0 (System.Object state) [0x0000b] in <4c0ea12a669844598cada415d99299fd>:0
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00008] in :0
at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in :0
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in :0

Thread 2:
0 md532e88b764fa2f2b57f502dd15796e5c4.GmsLocationTrackingService.n_onSensorChanged(GmsLocationTrackingService.java:-2)
1 md532e88b764fa2f2b57f502dd15796e5c4.GmsLocationTrackingService.onSensorChanged(GmsLocationTrackingService.java:48)
2 android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:964)
3 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
4 android.os.MessageQueue.next(MessageQueue.java:325)
5 android.os.Looper.loop(Looper.java:142)
6 android.app.ActivityThread.main(ActivityThread.java:6944)
7 java.lang.reflect.Method.invoke(Method.java:-2)
8 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
9 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Thread 51698:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:178)
2 java.lang.Daemons$Daemon.run(Daemons.java:103)
3 java.lang.Thread.run(Thread.java:764)

Thread 51699:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Object.wait(Object.java:422)
2 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
3 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
4 java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:232)
5 java.lang.Daemons$Daemon.run(Daemons.java:103)
6 java.lang.Thread.run(Thread.java:764)

Thread 51700:
0 java.lang.Thread.sleep(Thread.java:-2)
1 java.lang.Thread.sleep(Thread.java:373)
2 java.lang.Thread.sleep(Thread.java:314)
3 java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:342)
4 java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:364)
5 java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:281)
6 java.lang.Daemons$Daemon.run(Daemons.java:103)
7 java.lang.Thread.run(Thread.java:764)

Thread 51718:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 51719:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 51721:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 51722:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 51730:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 51737:
0 java.lang.Object.wait(Object.java:-2)
1 com.android.okhttp.okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:323)
2 com.android.okhttp.okio.AsyncTimeout.-wrap0
3 com.android.okhttp.okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:286)

Thread 51752:
0 android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1 android.os.MessageQueue.next(MessageQueue.java:325)
2 android.os.Looper.loop(Looper.java:142)
3 android.os.HandlerThread.run(HandlerThread.java:65)

Thread 52769:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Thread.parkFor$(Thread.java:2135)
2 sun.misc.Unsafe.park(Unsafe.java:358)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
5 java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
9 java.lang.Thread.run(Thread.java:764)

Thread 52770:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Thread.parkFor$(Thread.java:2135)
2 sun.misc.Unsafe.park(Unsafe.java:358)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
5 java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
9 java.lang.Thread.run(Thread.java:764)

Thread 52771:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Thread.parkFor$(Thread.java:2135)
2 sun.misc.Unsafe.park(Unsafe.java:358)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
5 java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
9 java.lang.Thread.run(Thread.java:764)

Thread 52772:
0 java.lang.Object.wait(Object.java:-2)
1 com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:101)
2 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
3 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
4 java.lang.Thread.run(Thread.java:764)

Thread 52773:
0 java.lang.Object.wait(Object.java:-2)
1 java.lang.Thread.parkFor$(Thread.java:2135)
2 sun.misc.Unsafe.park(Unsafe.java:358)
3 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
4 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
5 java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
6 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1086)
7 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1147)
8 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
9 java.lang.Thread.run(Thread.java:764)

Thread 52851:
0 java.lang.Object.wait(Object.java:-2)
1 com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:101)
2 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
3 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
4 java.lang.Thread.run(Thread.java:764)

@SeanFeldman
Copy link
Collaborator

3.4.0 is the latest. Try that version to see if fixes applied in a few releases since 3.1.1 fix this.

@SHuygh
Copy link
Author

SHuygh commented Mar 29, 2019

I will try this and see if this fixes the problem. This might take some time as the scenario does not occur very often, we only had this 8 times in a period of a month.

@axisc
Copy link

axisc commented Apr 10, 2019

Please reopen if you still have this issue. Closing for now.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants