[Mono-dev] ConcurrentQueue
Hi, I'm running the following .net program on mono (Ubuntu 12, sources 3.8.13.12) and after ~1 minute where the memory rises up (without any reason according to the code below), mono crash with TOO MANY HEAP SECTIONS. (using Queue + lock is stable) I got mono sources from Git and compile them with large heap. The result was the same. I have a few questions: 1. Do you have any idea what could cause this problem ? 2. regarding mono compilation, all makefiles created are with -g flag, how can I remove it ? Thanks Natti class Program { private static readonly ConcurrentQueue Pool = new ConcurrentQueue(); static void Main(string[] args) { //Fill for (var i = 0; i < 500; i++) Pool.Enqueue(new object()); var threads = Enumerable.Range(0, Environment.ProcessorCount) .Select(_ => new Thread(() => { while (true) { object obj; if (Pool.TryDequeue(out obj)) Pool.Enqueue(obj); } })).ToArray(); foreach (var t in threads) t.Start(); Thread.Sleep(Timeout.Infinite); } } } ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue issues (repros)
>From previous tests. Mono JIT compiler version 2.11.5 (master/3e19969 Tue Sep 25 17:24:10 EEST 2012) Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC:Included Boehm (with typed GC and Parallel Mark) Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[System.Object].TryDequeue (System.Object& result) [0x0] in :0 at ConsoleApplication1.Program+c__AnonStorey1.<>m__0 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[System.Object].TryDequeue (System.Object& result) [0x0] in :0 at ConsoleApplication1.Program+c__AnonStorey1.<>m__0 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 greg@ouroboros:~/src/retrospective/research/ccqueuetest/ConsoleApplication1/bin/ On Tue, Sep 25, 2012 at 5:00 PM, Konrad M. wrote: > On Tue, 2012-09-25 at 16:57 +0300, Greg Young wrote: >> reviewing commits >> >> object pool is DEAD! and I don't mean 57005 :) >> > > Btw, some tests I did with and without object pool (by reverting > introducing commit) showed that with SGEN it actually made things > slower, therefore it is better option also from this point. > > -- > Regards, > Konrad > -- Le doute n'est pas une condition agréable, mais la certitude est absurde. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue issues (repros)
On Tue, 2012-09-25 at 16:57 +0300, Greg Young wrote: > reviewing commits > > object pool is DEAD! and I don't mean 57005 :) > Btw, some tests I did with and without object pool (by reverting introducing commit) showed that with SGEN it actually made things slower, therefore it is better option also from this point. -- Regards, Konrad ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue issues (repros)
reviewing commits object pool is DEAD! and I don't mean 57005 :) OK will go faster home to check it now. Greg On Tue, Sep 25, 2012 at 4:56 PM, Greg Young wrote: > I will pull in a few minutes and give it a try. > > Cheers, > > Greg > > On Tue, Sep 25, 2012 at 4:44 PM, Jérémie Laval > wrote: >> Could you try master? >> >> -- >> Jérémie Laval >> http://neteril.org >> >> >> >> On Thu, Sep 20, 2012 at 2:38 PM, Greg Young wrote: >>> >>> Here are some tests that show some of the failure modes of concurrent >>> queue (all work in CLR impl) >>> >>> On my machine (8 cores within 1 second of running for all failures). >>> The worst is the last one where anything larger than a reference gives >>> partial reads. >>> >>> in gist if you prefer: https://gist.github.com/3755979 >>> >>> Unhandled Exception: >>> System.NullReferenceException: Object reference not set to an instance >>> of an object >>> at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue >>> (System.Collections.Concurrent.T& result) [0x0] in >> unknown>:0 >>> at >>> ConsoleApplication1.Program+c__AnonStorey1.<>m__0 >>> (System.Object x) [0x0] in :0 >>> at System.Threading.Thread.StartInternal () [0x0] in >> unknown>:0 >>> [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: >>> Object reference not set to an instance of an object >>> at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue >>> (System.Collections.Concurrent.T& result) [0x0] in >> unknown>:0 >>> at >>> ConsoleApplication1.Program+c__AnonStorey1.<>m__0 >>> (System.Object x) [0x0] in :0 >>> at System.Threading.Thread.StartInternal () [0x0] in >> unknown>:0 >>> >>> >>> >>> private static void TestMonoConcurrentQueueReference() >>> { >>> var queue = new ConcurrentQueue(); >>> var waits = new List(); >>> for (int i = 0; i < 5; i++) >>> { >>> int q = i; >>> waits.Add(new AutoResetEvent(false)); >>> var t = new Thread(x => >>> { >>> for (int j = 0; j < 1; j++) >>> { >>> if (j % 100 == 0) Console.Write("."); >>> queue.Enqueue(new object()); >>> object item; >>> if (queue.TryDequeue(out item)) >>> { >>> >>> } >>> } >>> waits[q].Set(); >>> }); >>> t.Start(); >>> } >>> Console.WriteLine("waiting."); >>> waits.ForEach(x => x.WaitOne()); >>> Console.WriteLine("done."); >>> >>> } >>> >>> >>> I end up in the else {} on try dequeue here don't think I should ever >>> be allowed to (and dont end up there in MS impl) >>> >>> struct TestStruct >>> { >>> public long X; >>> public long Y; >>> >>> public TestStruct(long x, long y) : this() >>> { >>> X = x; >>> Y = y; >>> } >>> } >>> >>> private static void TestMonoConcurrentQueueBiggerThanReference() >>> { >>> var queue = new ConcurrentQueue(); >>> var waits = new List(); >>> for(int i=0;i<5;i++) >>> { >>> int q = i; >>> waits.Add(new AutoResetEvent(false)); >>> var t = new Thread(x => >>>{ >>>for(int j=0;j<1;j++) >>>{ >>>if(j% 100 == 0) >>> Console.Write("."); >>>queue.Enqueue(new >>> TestStruct(0x11223344, 0x99887766)); >>>TestStruct item; >>>if(queue.TryDequeue(out >>> item)) >>>{ >>>if(item.X != >>> 0x11223344) throw new Exception("bad x"); >>>if(item.Y != >>> 0x99887766) throw new Exception("bad y"); >>>} else >>>{ >>>throw new >>> Exception("unable to read."); < should never hit this. >>>} >>>} >>>waits[q].Set(); >>>}); >>> t.Start(); >>> } >>> Console.WriteLine("waiting."); >>> waits.ForEach(x => x.WaitOne()); >>> Console.WriteLine("done."); >>> >>>
Re: [Mono-dev] ConcurrentQueue issues (repros)
I will pull in a few minutes and give it a try. Cheers, Greg On Tue, Sep 25, 2012 at 4:44 PM, Jérémie Laval wrote: > Could you try master? > > -- > Jérémie Laval > http://neteril.org > > > > On Thu, Sep 20, 2012 at 2:38 PM, Greg Young wrote: >> >> Here are some tests that show some of the failure modes of concurrent >> queue (all work in CLR impl) >> >> On my machine (8 cores within 1 second of running for all failures). >> The worst is the last one where anything larger than a reference gives >> partial reads. >> >> in gist if you prefer: https://gist.github.com/3755979 >> >> Unhandled Exception: >> System.NullReferenceException: Object reference not set to an instance >> of an object >> at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue >> (System.Collections.Concurrent.T& result) [0x0] in > unknown>:0 >> at >> ConsoleApplication1.Program+c__AnonStorey1.<>m__0 >> (System.Object x) [0x0] in :0 >> at System.Threading.Thread.StartInternal () [0x0] in > unknown>:0 >> [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: >> Object reference not set to an instance of an object >> at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue >> (System.Collections.Concurrent.T& result) [0x0] in > unknown>:0 >> at >> ConsoleApplication1.Program+c__AnonStorey1.<>m__0 >> (System.Object x) [0x0] in :0 >> at System.Threading.Thread.StartInternal () [0x0] in > unknown>:0 >> >> >> >> private static void TestMonoConcurrentQueueReference() >> { >> var queue = new ConcurrentQueue(); >> var waits = new List(); >> for (int i = 0; i < 5; i++) >> { >> int q = i; >> waits.Add(new AutoResetEvent(false)); >> var t = new Thread(x => >> { >> for (int j = 0; j < 1; j++) >> { >> if (j % 100 == 0) Console.Write("."); >> queue.Enqueue(new object()); >> object item; >> if (queue.TryDequeue(out item)) >> { >> >> } >> } >> waits[q].Set(); >> }); >> t.Start(); >> } >> Console.WriteLine("waiting."); >> waits.ForEach(x => x.WaitOne()); >> Console.WriteLine("done."); >> >> } >> >> >> I end up in the else {} on try dequeue here don't think I should ever >> be allowed to (and dont end up there in MS impl) >> >> struct TestStruct >> { >> public long X; >> public long Y; >> >> public TestStruct(long x, long y) : this() >> { >> X = x; >> Y = y; >> } >> } >> >> private static void TestMonoConcurrentQueueBiggerThanReference() >> { >> var queue = new ConcurrentQueue(); >> var waits = new List(); >> for(int i=0;i<5;i++) >> { >> int q = i; >> waits.Add(new AutoResetEvent(false)); >> var t = new Thread(x => >>{ >>for(int j=0;j<1;j++) >>{ >>if(j% 100 == 0) >> Console.Write("."); >>queue.Enqueue(new >> TestStruct(0x11223344, 0x99887766)); >>TestStruct item; >>if(queue.TryDequeue(out >> item)) >>{ >>if(item.X != >> 0x11223344) throw new Exception("bad x"); >>if(item.Y != >> 0x99887766) throw new Exception("bad y"); >>} else >>{ >>throw new >> Exception("unable to read."); < should never hit this. >>} >>} >>waits[q].Set(); >>}); >> t.Start(); >> } >> Console.WriteLine("waiting."); >> waits.ForEach(x => x.WaitOne()); >> Console.WriteLine("done."); >> >> } >> >> >> For good measure lets take out the exception in the last about not >> being able to read when it should be able to (eg comment out the >> throw) >> >> Unhandled Exception: >> System.Exception: bad y >> at >> ConsoleApplication1.Program+c__AnonStorey3.<>m__2 >> (System.Object x) [0x0] in :
Re: [Mono-dev] ConcurrentQueue issues (repros)
Could you try master? -- Jérémie Laval http://neteril.org On Thu, Sep 20, 2012 at 2:38 PM, Greg Young wrote: > Here are some tests that show some of the failure modes of concurrent > queue (all work in CLR impl) > > On my machine (8 cores within 1 second of running for all failures). > The worst is the last one where anything larger than a reference gives > partial reads. > > in gist if you prefer: https://gist.github.com/3755979 > > Unhandled Exception: > System.NullReferenceException: Object reference not set to an instance > of an object > at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue > (System.Collections.Concurrent.T& result) [0x0] in unknown>:0 > at > ConsoleApplication1.Program+c__AnonStorey1.<>m__0 > (System.Object x) [0x0] in :0 > at System.Threading.Thread.StartInternal () [0x0] in unknown>:0 > [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: > Object reference not set to an instance of an object > at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue > (System.Collections.Concurrent.T& result) [0x0] in unknown>:0 > at > ConsoleApplication1.Program+c__AnonStorey1.<>m__0 > (System.Object x) [0x0] in :0 > at System.Threading.Thread.StartInternal () [0x0] in unknown>:0 > > > > private static void TestMonoConcurrentQueueReference() > { > var queue = new ConcurrentQueue(); > var waits = new List(); > for (int i = 0; i < 5; i++) > { > int q = i; > waits.Add(new AutoResetEvent(false)); > var t = new Thread(x => > { > for (int j = 0; j < 1; j++) > { > if (j % 100 == 0) Console.Write("."); > queue.Enqueue(new object()); > object item; > if (queue.TryDequeue(out item)) > { > > } > } > waits[q].Set(); > }); > t.Start(); > } > Console.WriteLine("waiting."); > waits.ForEach(x => x.WaitOne()); > Console.WriteLine("done."); > > } > > > I end up in the else {} on try dequeue here don't think I should ever > be allowed to (and dont end up there in MS impl) > > struct TestStruct > { > public long X; > public long Y; > > public TestStruct(long x, long y) : this() > { > X = x; > Y = y; > } > } > > private static void TestMonoConcurrentQueueBiggerThanReference() > { > var queue = new ConcurrentQueue(); > var waits = new List(); > for(int i=0;i<5;i++) > { > int q = i; > waits.Add(new AutoResetEvent(false)); > var t = new Thread(x => >{ >for(int j=0;j<1;j++) >{ >if(j% 100 == 0) > Console.Write("."); >queue.Enqueue(new > TestStruct(0x11223344, 0x99887766)); >TestStruct item; >if(queue.TryDequeue(out > item)) >{ >if(item.X != > 0x11223344) throw new Exception("bad x"); >if(item.Y != > 0x99887766) throw new Exception("bad y"); >} else >{ >throw new > Exception("unable to read."); < should never hit this. >} >} >waits[q].Set(); >}); > t.Start(); > } > Console.WriteLine("waiting."); > waits.ForEach(x => x.WaitOne()); > Console.WriteLine("done."); > > } > > > For good measure lets take out the exception in the last about not > being able to read when it should be able to (eg comment out the > throw) > > Unhandled Exception: > System.Exception: bad y > at > ConsoleApplication1.Program+c__AnonStorey3.<>m__2 > (System.Object x) [0x0] in :0 > at System.Threading.Thread.StartInternal () [0x0] in unknown>:0 > > Unhandled Exception: > System.NullReferenceException: Object reference not set to an instance > of an object > at > System.Collections.Concurrent.ConcurrentQueue`1[ConsoleApplication1
[Mono-dev] ConcurrentQueue issues (repros)
Here are some tests that show some of the failure modes of concurrent queue (all work in CLR impl) On my machine (8 cores within 1 second of running for all failures). The worst is the last one where anything larger than a reference gives partial reads. in gist if you prefer: https://gist.github.com/3755979 Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue (System.Collections.Concurrent.T& result) [0x0] in :0 at ConsoleApplication1.Program+c__AnonStorey1.<>m__0 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[T].TryDequeue (System.Collections.Concurrent.T& result) [0x0] in :0 at ConsoleApplication1.Program+c__AnonStorey1.<>m__0 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 private static void TestMonoConcurrentQueueReference() { var queue = new ConcurrentQueue(); var waits = new List(); for (int i = 0; i < 5; i++) { int q = i; waits.Add(new AutoResetEvent(false)); var t = new Thread(x => { for (int j = 0; j < 1; j++) { if (j % 100 == 0) Console.Write("."); queue.Enqueue(new object()); object item; if (queue.TryDequeue(out item)) { } } waits[q].Set(); }); t.Start(); } Console.WriteLine("waiting."); waits.ForEach(x => x.WaitOne()); Console.WriteLine("done."); } I end up in the else {} on try dequeue here don't think I should ever be allowed to (and dont end up there in MS impl) struct TestStruct { public long X; public long Y; public TestStruct(long x, long y) : this() { X = x; Y = y; } } private static void TestMonoConcurrentQueueBiggerThanReference() { var queue = new ConcurrentQueue(); var waits = new List(); for(int i=0;i<5;i++) { int q = i; waits.Add(new AutoResetEvent(false)); var t = new Thread(x => { for(int j=0;j<1;j++) { if(j% 100 == 0) Console.Write("."); queue.Enqueue(new TestStruct(0x11223344, 0x99887766)); TestStruct item; if(queue.TryDequeue(out item)) { if(item.X != 0x11223344) throw new Exception("bad x"); if(item.Y != 0x99887766) throw new Exception("bad y"); } else { throw new Exception("unable to read."); < should never hit this. } } waits[q].Set(); }); t.Start(); } Console.WriteLine("waiting."); waits.ForEach(x => x.WaitOne()); Console.WriteLine("done."); } For good measure lets take out the exception in the last about not being able to read when it should be able to (eg comment out the throw) Unhandled Exception: System.Exception: bad y at ConsoleApplication1.Program+c__AnonStorey3.<>m__2 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[ConsoleApplication1.Program+TestStruct].TryDequeue (ConsoleApplication1.TestStruct& result) [0x0] in :0 at ConsoleApplication1.Program+c__AnonStorey3.<>m__2 (System.Object x) [0x0] in :0 at System.Threading.Thread.StartInternal () [0x0] in :0 Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[C
[Mono-dev] ConcurrentQueue
I have to admit I am a bit surprised how buggy concurrentqueue is. If you are reading this and building software that needs to run in a stable fashion just say no to concurrent queue. I have placed a few issues here before but we have seen it infinite loop internally, throw null reference exceptions etc I will try to find time to rework a new implementation in our budget but if you use existing one now its probably causing bugs in your app. My guess is it also leads to some internal runtime stability issues. Greg -- Le doute n'est pas une condition agréable, mais la certitude est absurde. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue
I've also been having NPE's with ConcurrentQueue in the context of TryDequeue with multiple threads. Was there a fix for this & did it make it into 2.11.3? On Fri, Aug 10, 2012 at 5:28 AM, Greg Young wrote: > I can't as I am about to head out of country (its also spuratic behaviour) > > I believe @yuriy probably can though. > > Cheers, > > Greg > > On Fri, Aug 10, 2012 at 5:26 AM, Jérémie Laval > wrote: > > Could you run you program in debug mode and paste the line number where > the > > problem happen? > > > > -- > > Jérémie Laval > > http://neteril.org > > > > > > > > On Fri, Aug 10, 2012 at 10:53 AM, Greg Young > > wrote: > >> > >> trunk. > >> > >> On Fri, Aug 10, 2012 at 2:53 AM, Alan wrote: > >> > Hey, > >> > > >> > What version of Mono are you testing against? > >> > > >> > Alan > >> > > >> > On 10 August 2012 09:52, Greg Young wrote: > >> >> We regularly can cause problems with ConcurrentQueue such as > >> >> > >> >> System.NullReferenceException: Object reference not set to an > instance > >> >> of an object > >> >> at > >> >> > System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue > >> >> (System.IO.FileStream& result) [0x0] in :0 > >> >> at SStable.PTable.GetFileStream () [0x0] in unknown>:0 > >> >> at SStable.PTable+c__Iterator2.MoveNext () [0x0] in > >> >> :0 > >> >> at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, > >> >> System.UInt64[]& position) [0x0] in :0 > >> >> at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 > >> >> version, System.UInt64[]& position) [0x0] in :0 > >> >> at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, > >> >> System.UInt64[]& position) [0x0] in :0 > >> >> at IndexKiller.Program.ReadItems (SStable.TableIndex index, > >> >> System.Threading.AutoResetEvent autoResetEvent) [0x0] in > >> >> unknown>:0 > >> >> at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object > x) > >> >> [0x0] in :0 > >> >> > >> >> We have posted up repros before but basically just pound on it with > >> >> five threads (each thread add and removes 1 item) > >> >> > >> >> It seems object pool is still buggy. > >> >> > >> >> -- > >> >> Le doute n'est pas une condition agréable, mais la certitude est > >> >> absurde. > >> >> ___ > >> >> Mono-devel-list mailing list > >> >> Mono-devel-list@lists.ximian.com > >> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > >> > >> > >> > >> -- > >> Le doute n'est pas une condition agréable, mais la certitude est > absurde. > >> ___ > >> Mono-devel-list mailing list > >> Mono-devel-list@lists.ximian.com > >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > > > > > > > -- > Le doute n'est pas une condition agréable, mais la certitude est absurde. > ___ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > -- Jonathan Shore http://tr8dr.wordpress.com/ ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue
I can't as I am about to head out of country (its also spuratic behaviour) I believe @yuriy probably can though. Cheers, Greg On Fri, Aug 10, 2012 at 5:26 AM, Jérémie Laval wrote: > Could you run you program in debug mode and paste the line number where the > problem happen? > > -- > Jérémie Laval > http://neteril.org > > > > On Fri, Aug 10, 2012 at 10:53 AM, Greg Young > wrote: >> >> trunk. >> >> On Fri, Aug 10, 2012 at 2:53 AM, Alan wrote: >> > Hey, >> > >> > What version of Mono are you testing against? >> > >> > Alan >> > >> > On 10 August 2012 09:52, Greg Young wrote: >> >> We regularly can cause problems with ConcurrentQueue such as >> >> >> >> System.NullReferenceException: Object reference not set to an instance >> >> of an object >> >> at >> >> System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue >> >> (System.IO.FileStream& result) [0x0] in :0 >> >> at SStable.PTable.GetFileStream () [0x0] in :0 >> >> at SStable.PTable+c__Iterator2.MoveNext () [0x0] in >> >> :0 >> >> at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, >> >> System.UInt64[]& position) [0x0] in :0 >> >> at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 >> >> version, System.UInt64[]& position) [0x0] in :0 >> >> at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, >> >> System.UInt64[]& position) [0x0] in :0 >> >> at IndexKiller.Program.ReadItems (SStable.TableIndex index, >> >> System.Threading.AutoResetEvent autoResetEvent) [0x0] in > >> unknown>:0 >> >> at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object x) >> >> [0x0] in :0 >> >> >> >> We have posted up repros before but basically just pound on it with >> >> five threads (each thread add and removes 1 item) >> >> >> >> It seems object pool is still buggy. >> >> >> >> -- >> >> Le doute n'est pas une condition agréable, mais la certitude est >> >> absurde. >> >> ___ >> >> Mono-devel-list mailing list >> >> Mono-devel-list@lists.ximian.com >> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> >> >> >> -- >> Le doute n'est pas une condition agréable, mais la certitude est absurde. >> ___ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > -- Le doute n'est pas une condition agréable, mais la certitude est absurde. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue
Could you run you program in debug mode and paste the line number where the problem happen? -- Jérémie Laval http://neteril.org On Fri, Aug 10, 2012 at 10:53 AM, Greg Young wrote: > trunk. > > On Fri, Aug 10, 2012 at 2:53 AM, Alan wrote: > > Hey, > > > > What version of Mono are you testing against? > > > > Alan > > > > On 10 August 2012 09:52, Greg Young wrote: > >> We regularly can cause problems with ConcurrentQueue such as > >> > >> System.NullReferenceException: Object reference not set to an instance > >> of an object > >> at > System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue > >> (System.IO.FileStream& result) [0x0] in :0 > >> at SStable.PTable.GetFileStream () [0x0] in :0 > >> at SStable.PTable+c__Iterator2.MoveNext () [0x0] in > >> :0 > >> at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, > >> System.UInt64[]& position) [0x0] in :0 > >> at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 > >> version, System.UInt64[]& position) [0x0] in :0 > >> at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, > >> System.UInt64[]& position) [0x0] in :0 > >> at IndexKiller.Program.ReadItems (SStable.TableIndex index, > >> System.Threading.AutoResetEvent autoResetEvent) [0x0] in >> unknown>:0 > >> at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object x) > >> [0x0] in :0 > >> > >> We have posted up repros before but basically just pound on it with > >> five threads (each thread add and removes 1 item) > >> > >> It seems object pool is still buggy. > >> > >> -- > >> Le doute n'est pas une condition agréable, mais la certitude est > absurde. > >> ___ > >> Mono-devel-list mailing list > >> Mono-devel-list@lists.ximian.com > >> http://lists.ximian.com/mailman/listinfo/mono-devel-list > > > > -- > Le doute n'est pas une condition agréable, mais la certitude est absurde. > ___ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list > ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue
trunk. On Fri, Aug 10, 2012 at 2:53 AM, Alan wrote: > Hey, > > What version of Mono are you testing against? > > Alan > > On 10 August 2012 09:52, Greg Young wrote: >> We regularly can cause problems with ConcurrentQueue such as >> >> System.NullReferenceException: Object reference not set to an instance >> of an object >> at >> System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue >> (System.IO.FileStream& result) [0x0] in :0 >> at SStable.PTable.GetFileStream () [0x0] in :0 >> at SStable.PTable+c__Iterator2.MoveNext () [0x0] in >> :0 >> at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, >> System.UInt64[]& position) [0x0] in :0 >> at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 >> version, System.UInt64[]& position) [0x0] in :0 >> at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, >> System.UInt64[]& position) [0x0] in :0 >> at IndexKiller.Program.ReadItems (SStable.TableIndex index, >> System.Threading.AutoResetEvent autoResetEvent) [0x0] in > unknown>:0 >> at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object x) >> [0x0] in :0 >> >> We have posted up repros before but basically just pound on it with >> five threads (each thread add and removes 1 item) >> >> It seems object pool is still buggy. >> >> -- >> Le doute n'est pas une condition agréable, mais la certitude est absurde. >> ___ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list -- Le doute n'est pas une condition agréable, mais la certitude est absurde. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
Re: [Mono-dev] ConcurrentQueue
Hey, What version of Mono are you testing against? Alan On 10 August 2012 09:52, Greg Young wrote: > We regularly can cause problems with ConcurrentQueue such as > > System.NullReferenceException: Object reference not set to an instance > of an object > at > System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue > (System.IO.FileStream& result) [0x0] in :0 > at SStable.PTable.GetFileStream () [0x0] in :0 > at SStable.PTable+c__Iterator2.MoveNext () [0x0] in > :0 > at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, > System.UInt64[]& position) [0x0] in :0 > at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 > version, System.UInt64[]& position) [0x0] in :0 > at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, > System.UInt64[]& position) [0x0] in :0 > at IndexKiller.Program.ReadItems (SStable.TableIndex index, > System.Threading.AutoResetEvent autoResetEvent) [0x0] in unknown>:0 > at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object x) > [0x0] in :0 > > We have posted up repros before but basically just pound on it with > five threads (each thread add and removes 1 item) > > It seems object pool is still buggy. > > -- > Le doute n'est pas une condition agréable, mais la certitude est absurde. > ___ > Mono-devel-list mailing list > Mono-devel-list@lists.ximian.com > http://lists.ximian.com/mailman/listinfo/mono-devel-list ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list
[Mono-dev] ConcurrentQueue
We regularly can cause problems with ConcurrentQueue such as System.NullReferenceException: Object reference not set to an instance of an object at System.Collections.Concurrent.ConcurrentQueue`1[System.IO.FileStream].TryDequeue (System.IO.FileStream& result) [0x0] in :0 at SStable.PTable.GetFileStream () [0x0] in :0 at SStable.PTable+c__Iterator2.MoveNext () [0x0] in :0 at SStable.PTable.TryGetValue (UInt32 stream, UInt32 version, System.UInt64[]& position) [0x0] in :0 at SStable.TableIndex.TryGetValueInternal (UInt32 stream, UInt32 version, System.UInt64[]& position) [0x0] in :0 at SStable.TableIndex.TryGetValue (UInt32 stream, UInt32 version, System.UInt64[]& position) [0x0] in :0 at IndexKiller.Program.ReadItems (SStable.TableIndex index, System.Threading.AutoResetEvent autoResetEvent) [0x0] in :0 at IndexKiller.Program+c__AnonStorey1.<>m__0 (System.Object x) [0x0] in :0 We have posted up repros before but basically just pound on it with five threads (each thread add and removes 1 item) It seems object pool is still buggy. -- Le doute n'est pas une condition agréable, mais la certitude est absurde. ___ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list