<div dir="ltr">Hey Neale,<div><br></div><div>When hitting <span style="font-size:12.8000001907349px">threadpool-ms.c:1310, could you print the result of the following 2 commands in gdb (or equivalent):</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">p mono_object_describe_fields((MonoObject*)async_result)</span><br></div><div><span style="font-size:12.8000001907349px">p (long long)(void*)&async_result->async_callback - (long long)(void*)async_result</span><br></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">I suspect the memory layout on s390x of the native struct is not the same as the memory layout of the managed object, leading to memory corruption like bugs.</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Thank you!</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Ludovic</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 5, 2015 at 5:47 PM, Neale Ferguson <span dir="ltr"><<a href="mailto:neale@sinenomine.net" target="_blank">neale@sinenomine.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Further investigation shows the value being set here:<br>
<br>
0x80200bb2 is in mono_gc_wbarrier_set_arrayref (sgen-mono.c:171).<br>
166     void<br>
167     mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr,<br>
MonoObject* value)<br>
168     {<br>
169             HEAVY_STAT (++stat_wbarrier_set_arrayref);<br>
170             if (sgen_ptr_in_nursery (slot_ptr)) {<br>
171                     *(void**)slot_ptr = value;<br>
172                     return;<br>
173             }<br>
174             SGEN_LOG (8, "Adding remset at %p", slot_ptr);<br>
175             if (value)<br>
<br>
<br>
This is called from:<br>
<br>
0x801a5c22 is in mono_threadpool_ms_end_invoke (threadpool-ms.c:1310).<br>
1305            }<br>
1306<br>
1307            MONO_OBJECT_SETREF (ares, endinvoke_called, 1);<br>
1308<br>
1309            /* wait until we are really finished */<br>
1310            if (ares->completed) {<br>
1311                    mono_monitor_exit ((MonoObject *) ares);<br>
1312            } else {<br>
1313                    gpointer wait_event;<br>
1314                    if (ares->handle) {<br>
<br>
<br>
Now the fact that the scan is pulling the value 0x1000000000000 this would<br>
indicate that the slot_ptr (ares) is not aligned on a pointer boundary so<br>
the calculation of this location must be incorrect.<br>
<div class="HOEnZb"><div class="h5">Neale<br>
<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" rel="noreferrer" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><span style="font-size:small;color:rgb(136,136,136)">Ludovic Henry</span><br style="font-size:small"><span style="font-size:small;color:rgb(136,136,136)">Runtime Software Engineer<br></span><span style="color:rgb(136,136,136);font-size:small">Xamarin, Inc.</span></div></div></div></div>
</div>