Bug 48750

Summary: Cairo 1.12.0 caused GTK3-Demo.exe crash on Windows
Product: cairo Reporter: Ray Linn <ray_linn>
Component: win32 backendAssignee: cairo-bugs mailing list <cairo-bugs>
Status: RESOLVED FIXED QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: critical    
Priority: medium CC: gerald, perry.werneck
Version: 1.12.0   
Hardware: x86-64 (AMD64)   
OS: Windows (All)   
Whiteboard:
i915 platform: i915 features:

Description Ray Linn 2012-04-16 00:05:29 UTC
I compiled GTK 3.4.0 based on Cairo 1.12.0, after success in complilation, and try to run the GTK3-demo.exe , but the program crashed at once.

Just copied and replaced the libcairo-2.dll with the old version (1.10.2) without any recompilation, the GTK3-DEMO.exe could run correctly at once.

It is clear, the bug result in the Cairo 1.12.0. Usig WinDbg for troubleshooting, the crash is due to any illegal heap operation "HEAP[gtk3-demo.exe]: Heap block at 000000000329B170 modified at 000000000329B3B8 past requested size of 238".

the call stack is as following:


00000000`0022eef8 00000000`7786f171 ntdll!RtlpBreakPointHeap+0x21
00000000`0022ef00 00000000`7781969f ntdll!RtlpCheckBusyBlockTail+0x211
00000000`0022ef40 00000000`77879a29 ntdll! ?? ::FNODOBFM::`string'+0xa800
00000000`0022ef80 00000000`7781dbc0 ntdll!RtlDebugFreeHeap+0xb9
00000000`0022efe0 00000000`7780413d ntdll! ?? ::FNODOBFM::`string'+0x10b82
00000000`0022f320 000007fe`ff7b10c8 ntdll!RtlFreeHeap+0x1a6
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\msys\1.0\local\bin\libcairo-2.dll - 
00000000`0022f3a0 00000000`68ddcc47 msvcrt!free+0x1c
00000000`0022f3d0 00000000`68e6dc75 libcairo_2!cairo_rectangle_list_destroy+0x43dc
00000000`0022f410 00000000`68e365a7 libcairo_2!cairo_win32_surface_get_image+0x14bd
00000000`0022f4c0 00000000`68e3f213 libcairo_2!cairo_surface_flush+0x59
00000000`0022f500 00000000`68e365a7 libcairo_2!cairo_device_observer_glyphs_elapsed+0x19f2
00000000`0022f540 00000000`68e35dcb libcairo_2!cairo_surface_flush+0x59
00000000`0022f580 00000000`68e35ca7 libcairo_2!cairo_surface_get_reference_count+0x40
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\msys\1.0\local\bin\libgdk-3-0.dll - 
00000000`0022f5c0 00000000`70edb6eb libcairo_2!cairo_surface_destroy+0xa6
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\msys\1.0\local\bin\libgtk-3-0.dll - 
00000000`0022f5f0 00000000`6656347e libgdk_3_0!gdk_window_end_paint+0x27c
00000000`0022f680 00000000`70ecc9cc libgtk_3_0!gtk_main_do_event+0x302
00000000`0022f770 00000000`70edca81 libgdk_3_0!gdk_drag_get_selection+0x110
00000000`0022f7a0 00000000`70edcbab libgdk_3_0!gdk_cairo_create+0x52b
00000000`0022f850 00000000`70edcbab libgdk_3_0!gdk_cairo_create+0x655
00000000`0022f900 00000000`70edcbab libgdk_3_0!gdk_cairo_create+0x655
00000000`0022f9b0 00000000`70f081e5 libgdk_3_0!gdk_cairo_create+0x655
00000000`0022fa60 00000000`70edce3b libgdk_3_0!gdk_win32_window_lookup_for_display+0x6f4
00000000`0022fa90 00000000`70edd0fa libgdk_3_0!gdk_cairo_create+0x8e5
00000000`0022fb20 00000000`664b02b5 libgdk_3_0!gdk_window_process_all_updates+0xf0
00000000`0022fb70 00000000`70ec19b7 libgtk_3_0!gtk_container_set_reallocate_redraws+0x250
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\msys\1.0\local\bin\libglib-2.0-0.dll - 
00000000`0022fbb0 00000000`68600a05 libgdk_3_0!gdk_threads_set_lock_functions+0xa5
00000000`0022fbf0 00000000`685fe3b5 libglib_2_0_0!g_child_watch_add+0xb2
00000000`0022fc20 00000000`685ff090 libglib_2_0_0!g_source_is_destroyed+0x2fe
00000000`0022fcc0 00000000`685ff285 libglib_2_0_0!g_main_context_dispatch+0x30
00000000`0022fcf0 00000000`685ff6c0 libglib_2_0_0!g_main_context_dispatch+0x225
00000000`0022fd60 00000000`66562d35 libglib_2_0_0!g_main_loop_run+0x1d7
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for gtk3-demo.exe - 
00000000`0022fdb0 00000000`0041b49e libgtk_3_0!gtk_main+0x6b
00000000`0022fdf0 00000000`004013c9 gtk3_demo!main+0x372
00000000`0022fe70 00000000`004014e8 gtk3_demo+0x13c9
00000000`0022ff30 00000000`770e652d gtk3_demo+0x14e8
00000000`0022ff60 00000000`777dc521 kernel32!BaseThreadInitThunk+0xd
00000000`0022ff90 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
Comment 1 Chris Wilson 2012-04-16 01:19:47 UTC
That callstack is garbage. Any change you can improve it with different compile options?
Comment 2 Ray Linn 2012-04-16 01:24:07 UTC
I am using GCC 4.7.0 ( MinGW 64) and executing .Configure after MSYS, both 1.10.2 and 1.12.0 using the same Configure options.
Comment 3 Perry Werneck 2012-04-19 19:13:39 UTC
I´m having a similar problem here, unfortunatelly my build was done without the symbol table too. I`ll rebuild everithing with gdb support tonight to see if I can get a better stack trace.

In the meanwhile: Did you try to compile another version of cairo with the same settings? May be an older one?
Comment 4 Perry Werneck 2012-04-19 19:22:01 UTC
Ops! My bad! I did notice the last comment.

(In reply to comment #3)
> I´m having a similar problem here, unfortunatelly my build was done without the
> symbol table too. I`ll rebuild everithing with gdb support tonight to see if I
> can get a better stack trace.
> 
> In the meanwhile: Did you try to compile another version of cairo with the same
> settings? May be an older one?
Comment 5 Perry Werneck 2013-08-21 15:47:10 UTC
Hi,

The problem is not happening again using the latest 64 bits binaries for MinGW & gtk3 got from OpenSUSE build service. 

PS: I can´t pinpoint in what version the problem stopped.
Comment 6 Uli Schlachter 2013-08-21 15:53:17 UTC
Closing this because of Perry's latest comment. Ray, please feel free to reopen if needed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.