Bug 48750 - Cairo 1.12.0 caused GTK3-Demo.exe crash on Windows
Cairo 1.12.0 caused GTK3-Demo.exe crash on Windows
Status: RESOLVED FIXED
Product: cairo
Classification: Unclassified
Component: win32 backend
1.12.0
x86-64 (AMD64) Windows (All)
: medium critical
Assigned To: cairo-bugs mailing list
cairo-bugs mailing list
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-04-16 00:05 UTC by Ray Linn
Modified: 2013-08-21 15:53 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.