[Mono-bugs] [Bug 483113] New: Monitor.Exit does not throw SynchronizationLockException if object is not locked.
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Fri Mar 6 19:35:52 EST 2009
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: mono-bugs at lists.ximian.com
ReportedBy: ravitch at nrtc.northrop.com
QAContact: mono-bugs at lists.ximian.com
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.
More information about the mono-bugs
mailing list