-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Closed
Description
Steps to Reproduce
- Put the following code in a console app:
[STAThread]
static void Main(string[] args)
{
System.Threading.ThreadStart ts = () =>
{
double sum = 0;
for (int i = 0; i < 10000; i++)
{
dynamic expo = new System.Dynamic.ExpandoObject();
expo.A = sum;
sum += expo.A + 37;
}
};
for (int i = 0; i < 50; i++)
{
System.Threading.Thread t = new System.Threading.Thread(ts);
t.Start();
}
System.Console.WriteLine("Waiting for it...");
return;
}- Run it in a loop on ARM64 with the following script:
#!/bin/bash
for i in `seq 1 10000`;
MONO_DEBUG=no-compact-seq-points mono --debug YOUREXE.exe
done Current Behavior
Crashes randomly with an ArgumentNullException after a couple of minutes
Expected Behavior
doesn't crash
On which platforms did you notice this
[ ] macOS
[x ] Linux
[ ] Windows
Version Used:
master version 6.7
Stacktrace
System.ArgumentNullException: Value cannot be null.
Parameter name: returnLabel
at System.Dynamic.DynamicMetaObjectBinder.Bind (System.Object[] args, System.Collections.ObjectModel.ReadOnlyCollection1[T] parameters, System.Linq.Expressions.LabelTarget returnLabel) [0x001cd] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObjectBinder.cs:141 at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T] (System.Runtime.CompilerServices.CallSite1[T] site, System.Object[] args) [0x0001c] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs:129
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet] (System.Runtime.CompilerServices.CallSite site, T0 arg0, T1 arg1) [0x00126] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Dynamic/UpdateDelegates.Generated.cs:263
at (wrapper delegate-invoke) System.Func4[System.Runtime.CompilerServices.CallSite,System.Object,System.Double,System.Object].invoke_TResult_T1_T2_T3(System.Runtime.CompilerServices.CallSite,object,double) at InverterScan.Program+<>c.<Main>b__46_0 () [0x00014] in C:\projects\Iridium\InverterScan\Program.cs:1462 at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00017] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00031] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899 at System.Threading.ThreadHelper.ThreadStart () [0x0000b] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111 [ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentNullException: Value cannot be null. Parameter name: returnLabel at System.Dynamic.DynamicMetaObjectBinder.Bind (System.Object[] args, System.Collections.ObjectModel.ReadOnlyCollection1[T] parameters, System.Linq.Expressions.LabelTarget returnLabel) [0x001cd] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Dynamic/DynamicMetaObjectBinder.cs:141
at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T] (System.Runtime.CompilerServices.CallSite1[T] site, System.Object[] args) [0x0001c] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Runtime/CompilerServices/CallSiteBinder.cs:129 at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet] (System.Runtime.CompilerServices.CallSite site, T0 arg0, T1 arg1) [0x00126] in /persistent/mono/external/corefx/src/System.Linq.Expressions/src/System/Dynamic/UpdateDelegates.Generated.cs:263 at (wrapper delegate-invoke) System.Func4[System.Runtime.CompilerServices.CallSite,System.Object,System.Double,System.Object].invoke_TResult_T1_T2_T3(System.Runtime.CompilerServices.CallSite,object,double)
at InverterScan.Program+<>c.
b__46_0 () [0x00014] in C:\projects\Iridium\InverterScan\Program.cs:1462
at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00017] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74
at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x0008d] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910
at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x00031] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899
at System.Threading.ThreadHelper.ThreadStart () [0x0000b] in /persistent/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111