Ok, that was easy. This test case crashes within 10s every time for me:<div><br></div><div>To compile:</div><div><br></div><div>$ dmcs /r:System.Drawing foo.cs</div><div><br></div><div>To run:</div><div><br></div><div>$ cp &lt;any valid jpeg file&gt; foo.jpg</div>
<div>$ mono t.exe</div><div><br></div><div><div>foo.cs:</div><div><br></div><div><div><font face="&#39;courier new&#39;, monospace">using System;</font></div><div><font face="&#39;courier new&#39;, monospace">using System.IO;</font></div>
<div><font face="&#39;courier new&#39;, monospace">using System.Threading;</font></div><div><font face="&#39;courier new&#39;, monospace">using System.Drawing;</font></div><div><font face="&#39;courier new&#39;, monospace">using System.Drawing.Imaging;</font></div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><font face="&#39;courier new&#39;, monospace">public class Foo {</font></div><div><font face="&#39;courier new&#39;, monospace">    const string infile = &quot;foo.jpg&quot;;</font></div>
<div><font face="&#39;courier new&#39;, monospace"><br></font></div><div><font face="&#39;courier new&#39;, monospace">    public static void Main(string[] args) {</font></div><div><font face="&#39;courier new&#39;, monospace">        for (int i =0; i &lt; 10; i++) </font></div>
<div><font face="&#39;courier new&#39;, monospace">            new Thread(Hammer).Start();</font></div><div><font face="&#39;courier new&#39;, monospace">        Hammer();</font></div><div><font face="&#39;courier new&#39;, monospace">    }   </font></div>
<div><font face="&#39;courier new&#39;, monospace">    </font></div><div><font face="&#39;courier new&#39;, monospace">    static void Hammer() {</font></div><div><font face="&#39;courier new&#39;, monospace">        while (true) {</font></div>
<div><font face="&#39;courier new&#39;, monospace">            using (var outbmp = new Bitmap(100, 100, PixelFormat.Format24bppRgb))</font></div><div><font face="&#39;courier new&#39;, monospace">            using (var stream = File.OpenRead(infile))</font></div>
<div><font face="&#39;courier new&#39;, monospace">            using (var inbmp = Bitmap.FromStream(stream))</font></div><div><font face="&#39;courier new&#39;, monospace">            using (var g = Graphics.FromImage(outbmp)) {</font></div>
<div><font face="&#39;courier new&#39;, monospace">                g.DrawImage(inbmp, new Rectangle(0, 0, outbmp.Width, outbmp.Height));</font></div><div><font face="&#39;courier new&#39;, monospace">            }   </font></div>
<div><font face="&#39;courier new&#39;, monospace">        }   </font></div><div><font face="&#39;courier new&#39;, monospace">    }   </font></div><div><font face="&#39;courier new&#39;, monospace">}   </font></div></div>
<div><br></div><div><br><br><div class="gmail_quote">On Thu, Dec 8, 2011 at 2:35 PM, Brian Luczkiewicz <span dir="ltr">&lt;<a href="mailto:brian@sooloos.com">brian@sooloos.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I wanted to report this sooner rather than later in case someone is already working on it. I don&#39;t yet have an isolated test case to reproduce this, but I am working on getting one together.<div><br></div><div>I&#39;ve observed this crash on a mac running lion. I am using this mono beta build: <a href="http://download.mono-project.com/archive/2.10.7/MonoFramework-MDK-2.10.7_gtk-beta.macos10.xamarin.x86.dmg" target="_blank">http://download.mono-project.com/archive/2.10.7/MonoFramework-MDK-2.10.7_gtk-beta.macos10.xamarin.x86.dmg</a>. mono 2.10.6 does not crash like this.</div>

<div><div><br></div><div><div>This is the code. I am using GDI+ simply as an image loader/scaler here. Note that this code can run concurrently in multiple threads, and the crash happens perhaps once for every 2-3000 times that the code is executed.</div>

<div><br></div><div><div><span style="font-family:&#39;courier new&#39;,monospace">      var outbmp = new Bitmap(o.Width, o.Height, PixelFormat.Format24bppRgb);</span></div><div><font face="&#39;courier new&#39;, monospace">      using (var stream = File.OpenRead(somefile))</font></div>

<div><font face="&#39;courier new&#39;, monospace">      using (var inbmp = Bitmap.FromStream(stream))</font></div><div><font face="&#39;courier new&#39;, monospace">      using (var g = Graphics.FromImage(bmp)) </font></div>

<div><font face="&#39;courier new&#39;, monospace">          g.DrawImage(</font><span style="font-family:&#39;courier new&#39;,monospace">outbmp</span><font face="&#39;courier new&#39;, monospace">, new Rectangle(0, 0, bmp.Width, bmp.Height));</font></div>

</div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div>The crash is due to an assert:</div><div><br></div><div><div><font face="&#39;courier new&#39;, monospace">Assertion failed: (!&quot;reached&quot;), function _cairo_hash_table_lookup_exact_key, file cairo-hash.c, line 471.</font></div>

<div><br></div><div>The stack for the assert look like this:</div><div><br></div><div><div><font face="&#39;courier new&#39;, monospace">0   libsystem_kernel.dylib              0x94dad9c6 __pthread_kill + 10</font></div>
<div>
<font face="&#39;courier new&#39;, monospace">1   libsystem_c.dylib                   0x91af2f78 pthread_kill + 106</font></div><div><font face="&#39;courier new&#39;, monospace">2   libsystem_c.dylib                   0x91ae3bdd abort + 167</font></div>

<div><font face="&#39;courier new&#39;, monospace">3   Sooloos                             0x00092f5a mono_handle_native_sigsegv + 858 (mini-exceptions.c:2130)</font></div><div><font face="&#39;courier new&#39;, monospace">4   Sooloos                             0x000dd0ad sigabrt_signal_handler + 109 (mini-posix.c:195)</font></div>

<div><font face="&#39;courier new&#39;, monospace">5   libsystem_c.dylib                   0x91b4859b _sigtramp + 43</font></div><div><font face="&#39;courier new&#39;, monospace">6   ???                                 0xffffffff 0 + 4294967295</font></div>

<div><font face="&#39;courier new&#39;, monospace">7   libsystem_c.dylib                   0x91ae3bdd abort + 167</font></div><div><font face="&#39;courier new&#39;, monospace">8   libsystem_c.dylib                   0x91b1820b __assert_rtn + 351</font></div>

<div><font face="&#39;courier new&#39;, monospace">9   libcairo.2.dylib                    0x0b172f5e _cairo_hash_table_lookup_exact_key + 270</font></div><div><font face="&#39;courier new&#39;, monospace">10  libcairo.2.dylib                    0x0b172f94 _cairo_hash_table_remove + 36</font></div>

<div><font face="&#39;courier new&#39;, monospace">11  libcairo.2.dylib                    0x0b1bd9ca _cairo_toy_font_face_destroy + 170</font></div><div><font face="&#39;courier new&#39;, monospace">12  libcairo.2.dylib                    0x0b16a02a cairo_font_face_destroy + 170</font></div>

<div><font face="&#39;courier new&#39;, monospace">13  libcairo.2.dylib                    0x0b16d508 _cairo_gstate_fini + 40</font></div><div><font face="&#39;courier new&#39;, monospace">14  libcairo.2.dylib                    0x0b15fe89 cairo_destroy + 201</font></div>

<div><font face="&#39;courier new&#39;, monospace">15  libgdiplus.dylib                    0x0af8cbe2 GdipDeleteGraphics + 162</font></div><div><font face="&#39;courier new&#39;, monospace">16  ???                                 0x0cbee06c 0 + 213835884</font></div>

<div><font face="&#39;courier new&#39;, monospace">17  ???                                 0x0cbedee4 0 + 213835492</font></div><div><font face="&#39;courier new&#39;, monospace">18  ???                                 0x0bfd7dd1 0 + 201162193</font></div>

<div><font face="&#39;courier new&#39;, monospace">19  ???                                 0x0bfd576c 0 + 201152364</font></div><div><font face="&#39;courier new&#39;, monospace">20  ???                                 0x0bfd4a68 0 + 201149032</font></div>

<div><font face="&#39;courier new&#39;, monospace">21  ???                                 0x0bfd4264 0 + 201146980</font></div><div><font face="&#39;courier new&#39;, monospace">22  ???                                 0x0bfd2d86 0 + 201141638</font></div>

<div><font face="&#39;courier new&#39;, monospace">23  ???                                 0x070483c1 0 + 117736385</font></div><div><font face="&#39;courier new&#39;, monospace">24  ???                                 0x035e9b52 0 + 56531794</font></div>

<div><font face="&#39;courier new&#39;, monospace">25  ???                                 0x035e966c 0 + 56530540</font></div><div><font face="&#39;courier new&#39;, monospace">26  ???                                 0x035e9452 0 + 56530002</font></div>

<div><font face="&#39;courier new&#39;, monospace">27  ???                                 0x035e3d9d 0 + 56507805</font></div><div><font face="&#39;courier new&#39;, monospace">28  Sooloos                             0x0000d0a2 mono_jit_runtime_invoke + 722 (mini.c:5791)</font></div>

<div><font face="&#39;courier new&#39;, monospace">29  Sooloos                             0x001a4caa mono_runtime_invoke + 170 (object.c:2755)</font></div><div><font face="&#39;courier new&#39;, monospace">30  Sooloos                             0x001a6547 mono_runtime_delegate_invoke + 135 (object.c:3420)</font></div>

<div><font face="&#39;courier new&#39;, monospace">31  Sooloos                             0x0021fec6 start_wrapper_internal + 726 (threads.c:799)</font></div><div><font face="&#39;courier new&#39;, monospace">32  Sooloos                             0x0021ff32 start_wrapper + 34 (threads.c:831)</font></div>

<div><font face="&#39;courier new&#39;, monospace">33  Sooloos                             0x002653ce thread_start_routine + 206 (wthreads.c:287)</font></div><div><font face="&#39;courier new&#39;, monospace">34  Sooloos                             0x001efa75 gc_start_thread + 165 (sgen-gc.c:6151)</font></div>

<div><font face="&#39;courier new&#39;, monospace">35  libsystem_c.dylib                   0x91af0ed9 _pthread_start + 335</font></div><div><font face="&#39;courier new&#39;, monospace">36  libsystem_c.dylib                   0x91af46de thread_start + 34</font></div>

</div><div><br></div><div><br></div><div>Interestingly, at the same time as the crash, another thread was in a nearby part of the code:</div><div><br></div><div><div><font face="&#39;courier new&#39;, monospace">0   libsystem_kernel.dylib              0x94dad876 __psynch_mutexwait + 10</font></div>

<div><font face="&#39;courier new&#39;, monospace">1   libsystem_c.dylib                   0x91aef6af pthread_mutex_lock + 633</font></div><div><font face="&#39;courier new&#39;, monospace">2   libcairo.2.dylib                    0x0b1bd25f _cairo_toy_font_face_hash_table_lock + 31</font></div>

<div><font face="&#39;courier new&#39;, monospace">3   libcairo.2.dylib                    0x0b1bd785 cairo_toy_font_face_create + 229</font></div><div><font face="&#39;courier new&#39;, monospace">4   libcairo.2.dylib                    0x0b170ae8 _cairo_gstate_select_font_face + 56</font></div>

<div><font face="&#39;courier new&#39;, monospace">5   libcairo.2.dylib                    0x0b162b0d cairo_select_font_face + 77</font></div><div><font face="&#39;courier new&#39;, monospace">6   libgdiplus.dylib                    0x0af8c92a gdip_graphics_cairo_init + 106</font></div>

<div><font face="&#39;courier new&#39;, monospace">7   libgdiplus.dylib                    0x0af8c975 gdip_graphics_new + 53</font></div><div><font face="&#39;courier new&#39;, monospace">8   libgdiplus.dylib                    0x0afa6072 GdipGetImageGraphicsContext + 306</font></div>

<div><font face="&#39;courier new&#39;, monospace">9   ???                                 0x0cbed888 0 + 213833864</font></div><div><font face="&#39;courier new&#39;, monospace">10  ???                                 0x0cbed58c 0 + 213833100</font></div>

<div><font face="&#39;courier new&#39;, monospace">11  ???                                 0x0bfd7c90 0 + 201161872</font></div><div><font face="&#39;courier new&#39;, monospace">12  ???                                 0x0bfd576c 0 + 201152364</font></div>

<div><font face="&#39;courier new&#39;, monospace">13  ???                                 0x0bfd4a68 0 + 201149032</font></div><div><font face="&#39;courier new&#39;, monospace">14  ???                                 0x0bfd4264 0 + 201146980</font></div>

<div><font face="&#39;courier new&#39;, monospace">15  ???                                 0x0bfd2d86 0 + 201141638</font></div><div><font face="&#39;courier new&#39;, monospace">16  ???                                 0x070483c1 0 + 117736385</font></div>

<div><font face="&#39;courier new&#39;, monospace">17  ???                                 0x035e9b52 0 + 56531794</font></div><div><font face="&#39;courier new&#39;, monospace">18  ???                                 0x035e966c 0 + 56530540</font></div>

<div><font face="&#39;courier new&#39;, monospace">19  ???                                 0x035e9452 0 + 56530002</font></div><div><font face="&#39;courier new&#39;, monospace">20  ???                                 0x035e3d9d 0 + 56507805</font></div>

<div><font face="&#39;courier new&#39;, monospace">21  Sooloos                             0x0000d0a2 mono_jit_runtime_invoke + 722 (mini.c:5791)</font></div><div><font face="&#39;courier new&#39;, monospace">22  Sooloos                             0x001a4caa mono_runtime_invoke + 170 (object.c:2755)</font></div>

<div><font face="&#39;courier new&#39;, monospace">23  Sooloos                             0x001a6547 mono_runtime_delegate_invoke + 135 (object.c:3420)</font></div><div><font face="&#39;courier new&#39;, monospace">24  Sooloos                             0x0021fec6 start_wrapper_internal + 726 (threads.c:799)</font></div>

<div><font face="&#39;courier new&#39;, monospace">25  Sooloos                             0x0021ff32 start_wrapper + 34 (threads.c:831)</font></div><div><font face="&#39;courier new&#39;, monospace">26  Sooloos                             0x002653ce thread_start_routine + 206 (wthreads.c:287)</font></div>

<div><font face="&#39;courier new&#39;, monospace">27  Sooloos                             0x001efa75 gc_start_thread + 165 (sgen-gc.c:6151)</font></div><div><font face="&#39;courier new&#39;, monospace">28  libsystem_c.dylib                   0x91af0ed9 _pthread_start + 335</font></div>

<div><font face="&#39;courier new&#39;, monospace">29  libsystem_c.dylib                   0x91af46de thread_start + 34</font></div></div></div></div></div></div>
</blockquote></div><br></div></div>