https://bugzilla.novell.com/show_bug.cgi?id=668767
https://bugzilla.novell.com/show_bug.cgi?id=668767#c0 Summary: Graphics.FillPolygon threading crash (TPL) Classification: Mono Product: Mono: Runtime Version: SVN Platform: x86-64 OS/Version: Ubuntu Status: NEW Severity: Critical Priority: P5 - None Component: misc AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 Using Graphics.FillPolygon() in separate threads on different objects frequently crashes the Mono runtime. Reproducible: Sometimes Steps to Reproduce: using System; using System.Drawing; using System.Threading.Tasks; class TestFillPolygon { public static void Main() { Parallel.For(0, 100, j => { var bitmap = new Bitmap(800, 600); var brush = new SolidBrush(Color.White); Point[] points = {new Point(10, 10), new Point(790, 300), new Point(10, 590)}; using (var graphics = Graphics.FromImage(bitmap)) graphics.FillPolygon(brush, points); }); } } Actual Results: SAMPLE OUTPUT 1: =============== *** glibc detected *** mono: double free or corruption (!prev): 0x00000000015bfe00 *** ======= Backtrace: ========= /lib/libc.so.6(+0x774b6)[0x7f3e850e14b6] /lib/libc.so.6(cfree+0x73)[0x7f3e850e7c83] /usr/lib/libpixman-1.so.0(pixman_image_unref+0x96)[0x7f3e79470176] /usr/lib/libcairo.so.2(+0x291b3)[0x7f3e7b0211b3] /usr/lib/libcairo.so.2(+0x2a61c)[0x7f3e7b02261c] /usr/lib/libcairo.so.2(+0x2bf1f)[0x7f3e7b023f1f] /usr/lib/libcairo.so.2(+0x2c380)[0x7f3e7b024380] /usr/lib/libcairo.so.2(+0x2c55e)[0x7f3e7b02455e] /usr/lib/libcairo.so.2(+0x49f56)[0x7f3e7b041f56] /usr/lib/libcairo.so.2(+0x2243e)[0x7f3e7b01a43e] /usr/lib/libcairo.so.2(cairo_fill_preserve+0x1d)[0x7f3e7b01143d] /usr/lib/libcairo.so.2(cairo_fill+0x9)[0x7f3e7b011469] /opt/mono-git/lib/libgdiplus.so(+0x19ff6)[0x7f3e7b5afff6] [0x41e18597] ======= Memory map: ======== 00400000-006e0000 r-xp 00000000 08:05 2752632 /opt/mono-git/bin/mono 008e0000-008e1000 r--p 002e0000 08:05 2752632 /opt/mono-git/bin/mono 008e1000-008ea000 rw-p 002e1000 08:05 2752632 /opt/mono-git/bin/mono 008ea000-00924000 rw-p 00000000 00:00 0 014d5000-01661000 rw-p 00000000 00:00 0 [heap] 4074e000-4074f000 r--p 00000000 00:00 0 409f9000-40a0a000 rwxp 00000000 00:00 0 412e5000-412f6000 rwxp 00000000 00:00 0 41758000-41759000 ---p 00000000 00:00 0 41e0b000-41e1c000 rwxp 00000000 00:00 0 7f3e5c000000-7f3e5c02e000 rw-p 00000000 00:00 0 7f3e5c02e000-7f3e60000000 ---p 00000000 00:00 0 7f3e63dea000-7f3e63dff000 r-xp 00000000 08:05 1179704 /lib/libgcc_s.so.1 7f3e63dff000-7f3e63ffe000 ---p 00015000 08:05 1179704 /lib/libgcc_s.so.1 7f3e63ffe000-7f3e63fff000 r--p 00014000 08:05 1179704 /lib/libgcc_s.so.1 7f3e63fff000-7f3e64000000 rw-p 00015000 08:05 1179704 /lib/libgcc_s.so.1 7f3e64000000-7f3e64036000 rw-p 00000000 00:00 0 7f3e64036000-7f3e68000000 ---p 00000000 00:00 0 7f3e68000000-7f3e6805f000 rw-p 00000000 00:00 0 7f3e6805f000-7f3e6c000000 ---p 00000000 00:00 0 7f3e6c1e2000-7f3e6f703000 rw-p 00000000 00:00 0 7f3e6f703000-7f3e6f8ac000 r--p 00000000 08:05 2755269 /opt/mono-2.8.2/lib/mono/gac/System/4.0.0.0__b77a5c561934e089/System.dll 7f3e6f8ac000-7f3e70000000 rw-p 00000000 00:00 0 7f3e70000000-7f3e70065000 rw-p 00000000 00:00 0 7f3e70065000-7f3e74000000 ---p 00000000 00:00 0 7f3e74000000-7f3e74099000 rw-p 00000000 00:00 0 7f3e74099000-7f3e78000000 ---p 00000000 00:00 0 7f3e780aa000-7f3e787fe000 rw-p 00000000 00:00 0 7f3e787fe000-7f3e78803000 r-xp 00000000 08:05 11930405 /usr/lib/libXdmcp.so.6.0.0 7f3e78803000-7f3e78a02000 ---p 00005000 08:05 11930405 /usr/lib/libXdmcp.so.6.0.0 7f3e78a02000-7f3e78a03000 r--p 00004000 08:05 11930405 /usr/lib/libXdmcp.so.6.0.0 7f3e78a03000-7f3e78a04000 rw-p 00005000 08:05 11930405 /usr/lib/libXdmcp.so.6.0.0 7f3e78a04000-7f3e78a06000 r-xp 00000000 08:05 11933400 /usr/lib/libXau.so.6.0.0 7f3e78a06000-7f3e78c05000 ---p 00002000 08:05 11933400 /usr/lib/libXau.so.6.0.0 7f3e78c05000-7f3e78c06000 r--p 00001000 08:05 11933400 /usr/lib/libXau.so.6.0.0 7f3e78c06000-7f3e78c07000 rw-p 00002000 08:05 11933400 /usr/lib/libXau.so.6.0.0 7f3e78c07000-7f3e78c2d000 r-xp 00000000 08:05 1179720 /lib/libexpat.so.1.5.2 7f3e78c2d000-7f3e78e2d000 ---p 00026000 08:05 1179720 /lib/libexpat.so.1.5.2 7f3e78e2d000-7f3e78e2f000 r--p 00026000 08:05 1179720 /lib/libexpat.so.1.5.2 7f3e78e2f000-7f3e78e30000 rw-p 00028000 08:05 1179720 /lib/libexpat.so.1.5.2 7f3e78e30000-7f3e78e4b000 r-xp 00000000 08:05 11930416 /usr/lib/libxcb.so.1.1.0 7f3e78e4b000-7f3e7904b000 ---p 0001b000 08:05 11930416 /usr/lib/libxcb.so.1.1.0 7f3e7904b000-7f3e7904c000 r--p 0001b000 08:05 11930416 /usr/lib/libxcb.so.1.1.0 7f3e7904c000-7f3e7904d000 rw-p 0001c000 08:05 11930416 /usr/lib/libxcb.so.1.1.0 7f3e7904d000-7f3e79054000 r-xp 00000000 08:05 11927883 /usr/lib/libxcb-render.so.0.0.0 7f3e79054000-7f3e79254000 ---p 00007000 08:05 11927883 /usr/lib/libxcb-render.so.0.0.0 7f3e79254000-7f3e79255000 r--p 00007000 08:05 11927883 /usr/lib/libxcb-render.so.0.0.0 7f3e79255000-7f3e79256000 rw-p 00008000 08:05 11927883 /usr/lib/libxcb-render.so.0.0.0 7f3e79256000-7f3e79258000 r-xp 00000000 08:05 11928434 /usr/lib/libxcb-shm.so.0.0.0 7f3e79258000-7f3e79457000 ---p 00002000 08:05 11928434 /usr/lib/libxcb-shm.so.0.0.0 7f3e79457000-7f3e79458000 r--p 00001000 08:05 11928434 /usr/lib/libxcb-shm.so.0.0.0 7f3e79458000-7f3e79459000 rw-p 00002000 08:05 11928434 /usr/lib/libxcb-shm.so.0.0.0 7f3e79459000-7f3e794b4000 r-xp 00000000 08:05 11927711 /usr/lib/libpixman-1.so.0.18.4 7f3e794b4000-7f3e796b3000 ---p 0005b000 08:05 11927711 /usr/lib/libpixman-1.so.0.18.4 7f3e796b3000-7f3e796b7000 r--p 0005a000 08:05 11927711 /usr/lib/libpixman-1.so.0.18.4 7f3e796b7000-7f3e796b8000 rw-p 0005e000 08:05 11927711 /usr/lib/libpixman-1.so.0.18.4 7f3e796b8000-7f3e796e8000 r-xp 00000000 08:05 1179715 /lib/libpcre.so.3.12.1 7f3e796e8000-7f3e798e7000 ---p 00030000 08:05 1179715 /lib/libpcre.so.3.12.1 7f3e798e7000-7f3e798e8000 r--p 0002f000 08:05 1179715 /lib/libpcre.so.3.12.1 7f3e798e8000-7f3e798e9000 rw-p 00030000 08:05 1179715 /lib/libpcre.so.3.12.1 7f3e798e9000-7f3e7991c000 r-xp 00000000 08:05 11930698 /usr/lib/libfontconfig.so.1.4.4 7f3e7991c000-7f3e79b1c000 ---p 00033000 08:05 11930698 /usr/lib/libfontconfig.so.1.4.4 7f3e79b1c000-7f3e79b1d000 r--p 00033000 08:05 11930698 /usr/lib/libfontconfig.so.1.4.4 7f3e79b1d000-7f3e79b1e000 rw-p 00034000 08:05 11930698 /usr/lib/libfontconfig.so.1.4.4 7f3e79b1e000-7f3e79b4f000 r-xp 00000000 08:05 11930690 /usr/lib/libexif.so.12.3.1 7f3e79b4f000-7f3e79d4f000 ---p 00031000 08:05 11930690 /usr/lib/libexif.so.12.3.1 7f3e79d4f000-7f3e79d62000 r--p 00031000 08:05 11930690 /usr/lib/libexif.so.12.3.1Stacktrace: at (wrapper managed-to-native) System.Drawing.GDIPlus.GdipFillPolygon2I (intptr,intptr,System.Drawing.Point[],int) <0xffffffff> at System.Drawing.Graphics.FillPolygon (System.Drawing.Brush,System.Drawing.Point[]) <0x000cf> at (wrapper remoting-invoke-with-check) System.Drawing.Graphics.FillPolygon (System.Drawing.Brush,System.Drawing.Point[]) <0xffffffff> at TestBitmap.<Main>m__0 (int) <0x00193> at System.Threading.Tasks.Parallel/<For>c__AnonStorey40.<>m__3C (int,System.Threading.Tasks.ParallelLoopState) <0x0001e> at System.Threading.Tasks.Parallel/<For>c__AnonStorey41.<>m__3E (int,System.Threading.Tasks.ParallelLoopState,object) <0x00028> at System.Threading.Tasks.Parallel/<For>c__AnonStorey42`1.<>m__40 () <0x002d9> at System.Threading.Tasks.TaskFactory/<StartNew>c__AnonStorey15.<>m__B (object) <0x00014> at System.Threading.Tasks.Task.InnerInvoke () <0x00021> at System.Threading.Tasks.Task.ThreadStart () <0x000cc> at System.Threading.Tasks.Task.Execute (System.Action`1<System.Threading.Tasks.Task>) <0x00033> at System.Threading.Tasks.ThreadWorker.ParticipativeWorkerMethod (System.Threading.Tasks.Task,System.Threading.ManualResetEventSlim,int,System.Collections.Concurrent.IProducerConsumerCollection`1<System.Threading.Tasks.Task>,System.Threading.Tasks.ThreadWorker[],System.Threading.ManualResetEvent) <0x00153> at System.Threading.Tasks.Scheduler.ParticipateUntilInternal (System.Threading.Tasks.Task,System.Threading.ManualResetEventSlim,int) <0x0003f> at System.Threading.Tasks.Scheduler.ParticipateUntil (System.Threading.Tasks.Task) <0x000eb> at System.Threading.Tasks.Task.Wait () <0x00045> at System.Threading.Tasks.Task.WaitAll (System.Threading.Tasks.Task[]) <0x0005b> at System.Threading.Tasks.Parallel.For<TLocal> (int,int,System.Threading.Tasks.ParallelOptions,System.Func`1<TLocal>,System.Func`4<int, System.Threading.Tasks.ParallelLoopState, TLocal, TLocal>,System.Action`1<TLocal>) <0x00457> at System.Threading.Tasks.Parallel.For (int,int,System.Threading.Tasks.ParallelOptions,System.Action`2<int, System.Threading.Tasks.ParallelLoopState>) <0x00163> at System.Threading.Tasks.Parallel.For (int,int,System.Threading.Tasks.ParallelOptions,System.Action`1<int>) <0x0008f> at System.Threading.Tasks.Parallel.For (int,int,System.Action`1<int>) <0x0003b> at TestBitmap.Main () <0x0007b> at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff> Native stacktrace: mono() [0x48f3ab] /lib/libpthread.so.0(+0xfb40) [0x7f3e853fcb40] /lib/libc.so.6(gsignal+0x35) [0x7f3e8509dba5] /lib/libc.so.6(abort+0x180) [0x7f3e850a16b0] /lib/libc.so.6(+0x6d43b) [0x7f3e850d743b] /lib/libc.so.6(+0x774b6) [0x7f3e850e14b6] /lib/libc.so.6(cfree+0x73) [0x7f3e850e7c83] /usr/lib/libpixman-1.so.0(pixman_image_unref+0x96) [0x7f3e79470176] /usr/lib/libcairo.so.2(+0x291b3) [0x7f3e7b0211b3] /usr/lib/libcairo.so.2(+0x2a61c) [0x7f3e7b02261c] /usr/lib/libcairo.so.2(+0x2bf1f) [0x7f3e7b023f1f] /usr/lib/libcairo.so.2(+0x2c380) [0x7f3e7b024380] /usr/lib/libcairo.so.2(+0x2c55e) [0x7f3e7b02455e] /usr/lib/libcairo.so.2(+0x49f56) [0x7f3e7b041f56] /usr/lib/libcairo.so.2(+0x2243e) [0x7f3e7b01a43e] /usr/lib/libcairo.so.2(cairo_fill_preserve+0x1d) [0x7f3e7b01143d] /usr/lib/libcairo.so.2(cairo_fill+0x9) [0x7f3e7b011469] /opt/mono-git/lib/libgdiplus.so(+0x19ff6) [0x7f3e7b5afff6] [0x41e18597] Debug info from gdb: Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf ptrace: Operation not permitted. ================================================================= Got a SIGABRT while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. ================================================================= SAMPLE OUTPUT 2: =============== Stacktrace: Native stacktrace: mono() [0x48f3ab] mono() [0x4e3cbf] mono() [0x41500b] /lib/libpthread.so.0(+0xfb40) [0x7fc60b292b40] /lib/libc.so.6(+0x7763a) [0x7fc60af7763a] /lib/libc.so.6(+0x7ae82) [0x7fc60af7ae82] /lib/libc.so.6(__libc_calloc+0xc4) [0x7fc60af7e254] /usr/lib/libpixman-1.so.0(pixman_image_create_bits+0x1d5) [0x7fc5ef224015] /usr/lib/libcairo.so.2(+0x29102) [0x7fc604f3e102] /usr/lib/libcairo.so.2(+0x2a61c) [0x7fc604f3f61c] /usr/lib/libcairo.so.2(+0x2bf1f) [0x7fc604f40f1f] /usr/lib/libcairo.so.2(+0x2c380) [0x7fc604f41380] /usr/lib/libcairo.so.2(+0x2c55e) [0x7fc604f4155e] /usr/lib/libcairo.so.2(+0x49f56) [0x7fc604f5ef56] /usr/lib/libcairo.so.2(+0x2243e) [0x7fc604f3743e] /usr/lib/libcairo.so.2(cairo_fill_preserve+0x1d) [0x7fc604f2e43d] /usr/lib/libcairo.so.2(cairo_fill+0x9) [0x7fc604f2e469] /opt/mono-git/lib/libgdiplus.so(+0x19ff6) [0x7fc6054ccff6] [0x41c7d5e7] Debug info from gdb: Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf ptrace: Operation not permitted. ================================================================= Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application. ================================================================= SAMPLE OUTPUT 3: =============== Segmentation fault Expected Results: No crash. -- 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
