Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by gert.driesen (AT) pandora (DOT) be.
shadow/791162006-08-20 05:01:23.000000000 -0400
shadow/79116.tmp.7572006-08-20 05:01:23.000000000 -0400
@@ -0,0 +1,202 @@
+Bug#: 79116
+Product: Mono: Runtime
+Version: 1.1
+S:
+S Details:
+Status: NEW
+Resolution:
+Severity:
+Priority: Normal
+Component: interop
+AssignedTo: mono-bugs (AT) ximian (DOT) com
+ReportedBy: gert.driesen (AT) pandora (DOT) be
+QAContact: mono-bugs (AT) ximian (DOT) com
+TargetMilestone:
+URL:
+Cc:
+Summary: SIGSEGV using win32 FormatMessage API
+
+I'm currently using the Win32 FormatMessage API to lookup messages from
+unmanaged resource DLLs, however there appear to be some issues with this.
+
+First of all, the number of bytes returned by the FormatMessage API is
+different when executed from Mono, and is not consistent.
+
+When executing the exact same call (see attached repro) numerous times I
+get results ranging from 6 to 14 bytes, while MS.NET always returns 10
+bytes.
+
+Also when running it on Mono, I occasionally get a 234 win32 error, which
+means that more data is available. However, I'm explicitly letting the
+FormatMessage API allocate the buffer, so we should never get a 234 (and
+I actually don't get it when running on MS.NET).
+
+Eventually, I always get a SIGSEGV:
+
+To reproduce:
+
+1. Extract the attached zip file.
+2. Compile test.cs.
+3. Run test.exe on Windows (as it uses win32 API calls).
+
+The attached zip file contains:
+
+- test.cs: C# source for reproducing error
+- EventLogMessages.dll: unmanaged resource DLL.
+
+Note: I've only tested using the Mono 1.1.6 release, as I have problems
+building Mono from SVN on Windows.
+
+Expected result:
+
+10
+10
+drieseng
+
+(1000 times, as I execute the FormatMessage API in a loop)
+
+The first number is the number of bytes read, while the second number is
+the length of the message (after converting from ptr to string).
+
+Actual result:
+
+14
+8
+drieseng
+win32 error [234]: Some sort of w32 error occurred: 234
+
+6
+9
+drieseng
+
+18
+8
+drieseng
+6
+9
+drieseng
+
+win32 error [234]: Some sort of w32 error occurred: 234
+
+6
+9
+drieseng
+
+22
+8
+drieseng
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+18
+8
+drieseng
+9
+8
+drieseng
+18
+8
+drieseng
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+9
+8
+drieseng
+18
+8
+drieseng
+9
+8
+drieseng
+18
+8
+drieseng
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+6
+9
+drieseng
+
+
+
+Got a SIGSEGV while executing native code. This usually indicates
+a fatal error in the mono runtime or one of the native libraries
+used by your application.
+
+
+Stacktrace:
+
+ at (wrapper managed-to-native)
+
+(,intptr,uint,int,intptr&,in
+t,intptr[]) <0x00004>
+ at (wrapper managed-to-native)
+
+(,intptr,uint,int,intptr&,in
+t,intptr[]) <0xffffffff>
+ at (string,uint,string[])
+<0x000d9>
+ at (string[]) <0x00053>
+ at (wrapper runtime-invoke) S[]
+(object,intptr,intptr,intptr) <0xffffffff>
+
+This application has requested the Runtime to terminate it in an unusual
+way.
+Please contact the application's support team for more information.
mono-bugs maillist - mono-bugs (AT) lists (DOT) ximian.com