Bug 45131

Summary: Array of double*[] being treated as non-blittable when marshaled
Product: [Mono] Runtime Reporter: Neale Ferguson <neale>
Component: InteropAssignee: Bugzilla <bugzilla>
Status: RESOLVED FIXED    
Severity: normal CC: flutos, mono-bugs+mono, mono-bugs+runtime, vargaz
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Tags: Is this bug a regression?: ---
Last known good build:
Attachments: Simple test case
Sample test case code

Description Neale Ferguson 2016-10-06 18:06:16 UTC
Created attachment 17913 [details]
Simple test case

When doing an interop call and trying to access a pinned c# array of double* in c++ we get a segment fault. A test case is attached. Research reveals that the behaviour of the marshaling of double*[] has changed between 4.4 and 4.5/4.6/... In 4.4 the element class is classified as "blittable" but not in the affected levels of code. The marshaling code generated is very different and results in a SEGV.
Comment 1 Neale Ferguson 2016-10-06 18:07:21 UTC
Created attachment 17914 [details]
Sample test case code

C code containing the call to which the double*[] is marshalled.
Comment 2 Zoltan Varga 2016-10-07 02:09:23 UTC
https://github.com/mono/mono/pull/3735
Comment 3 Zoltan Varga 2016-10-07 18:21:26 UTC
-> FIXED.