[prev in list] [next in list] [prev in thread] [next in thread]
List: mono-bugs
Subject: [Mono-bugs] [Bug 357519] New: IDisposable incorrectly implemented
From: bugzilla_noreply () novell ! com
Date: 2008-01-31 7:54:46
Message-ID: bug-357519-28286 () https ! bugzilla ! novell ! com/
[Download RAW message or body]
https://bugzilla.novell.com/show_bug.cgi?id=357519
Summary: IDisposable incorrectly implemented in streams
Product: Mono: Class Libraries
Version: 1.2.5
Platform: Other
OS/Version: Debian Woody
Status: NEW
Severity: Normal
Priority: P5 - None
Component: System
AssignedTo: mono-bugs@lists.ximian.com
ReportedBy: atlaste@yahoo.com
QAContact: mono-bugs@lists.ximian.com
Found By: Customer
Description of Problem:
Mono doesn't handle dispose correctly in streams.
Unhandled Exception: System.ObjectDisposedException: The object was used after
being disposed.
at System.IO.Compression.DeflateStream.FlushInternal (Boolean finish)
[0x00000]
at System.IO.Compression.DeflateStream.Dispose (Boolean disposing) [0x00000]
at System.IO.Stream.Close () [0x00000]
at System.IO.Stream.Dispose () [0x00000]
at (wrapper remoting-invoke-with-check) System.IO.Stream:Dispose ()
at System.IO.Compression.GZipStream.Dispose (Boolean disposing) [0x00000]
at System.IO.Stream.Close () [0x00000]
at System.IO.BinaryWriter.Dispose (Boolean disposing) [0x00000]
at System.IO.BinaryWriter.System.IDisposable.Dispose () [0x00000]
at DictionaryBuilding.ProbDict.Merge.GeneralWriter.WriteAll () [0x00000]
at DictionaryBuilding.ProbDict.EMAlgorithm.EM (Int32 steps) [0x00000]
at DictionaryBuilding.DictionaryBuilding.Calculate () [0x00000]
at DictionaryBuilding.Program.Main (System.String[] args) [0x00000]
Unhandled Exception: System.ObjectDisposedException: The object was used after
being disposed.
at System.IO.Compression.DeflateStream.FlushInternal (Boolean finish)
[0x00000]
at System.IO.Compression.DeflateStream.Dispose (Boolean disposing) [0x00000]
at System.IO.Stream.Close () [0x00000]
at System.IO.Stream.Dispose () [0x00000]
at (wrapper remoting-invoke-with-check) System.IO.Stream:Dispose ()
at System.IO.Compression.GZipStream.Dispose (Boolean disposing) [0x00000]
at System.IO.Stream.Close () [0x00000]
at System.IO.Stream.System.IDisposable.Dispose () [0x00000]
at DictionaryBuilding.ProbDict.Merge.GeneralWriter.WriteAll () [0x00000]
at DictionaryBuilding.ProbDict.EMAlgorithm.EM (Int32 steps) [0x00000]
at DictionaryBuilding.DictionaryBuilding.Calculate () [0x00000]
at DictionaryBuilding.Program.Main (System.String[] args) [0x00000]
*** glibc detected *** mono: double free or corruption (!prev): 0x08483100 ***
Source code:
using (Stream s1 = new BufferedStream(File.OpenWrite(filename)))
{
using (GZipStream s = new GZipStream(s1,
CompressionMode.Compress))
{
using (BinaryWriter bw = new BinaryWriter(s))
{
foreach (Wordpair wp in child.Iterate())
{
if (wp.P >= 0.0f)
{
bw.Write(wp.X);
bw.Write(wp.Y);
bw.Write(wp.P);
}
}
bw.Write(-1);
bw.Write(-1);
bw.Write(-1);
bw.Close();
}
s.Close();
}
s1.Close();
}
Note that this code is perfectly legal in .NET!
Actual Results:
Crash
Expected Results:
No crash :-)
How often does this happen?
Always
Additional Information:
Behavior of IDisposable is incorrect. This happens in almost all classes with
resources that are being managed. The solution is to implement the IDisposable
pattern as stated on microsoft.com correctly.
Greetings,
Stefan.
--
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 - mono-bugs@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-bugs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic