https://bugzilla.novell.com/show_bug.cgi?id=483113
Summary: Monitor.Exit does not throw
SynchronizationLockException if object is not locked.
Classification: Mono
Product: Mono: Runtime
Version: 2.2.x
Platform: x86-64
OS/Version: All
Status: NEW
Severity: Normal
Priority: P5 - None
Component: misc
AssignedTo: [email protected]
ReportedBy: [email protected]
QAContact: [email protected]
Found By: ---
Created an attachment (id=277817)
--> (https://bugzilla.novell.com/attachment.cgi?id=277817)
Test case
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.6)
Gecko/2009020911 Ubuntu/8.10 (intrepid) Firefox/3.0.6
In MS .Net 2.0, calling Monitor.Exit() when there has not been a corresponding
call to Monitor.Enter() (or use of the lock primitive) causes a
System.Threading.SynchronizationLockException to be thrown. Mono does not do
this.
Just poking around, it looks like the problem is in mono/metadata/monitor.c:658
which looks like:
if (G_UNLIKELY (mon == NULL)) {
/* No one ever used Enter. Just ignore the Exit request as MS does */
return;
}
(Perhaps .Net 1.1 behaved this way - but for at least 2.0, it's no longer the
case that MS just ignores the Exit request.)
Reproducible: Always
Steps to Reproduce:
1. Compile attached example code (either with gmcs or csc)
2. Run the resulting assembly.
Actual Results:
[Exits silently.]
Expected Results:
Unhandled Exception: System.Threading.SynchronizationLockException: Object
synchronization method was called from an unsynchronized block of code.
at LockTest.Main()
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs