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
That callstack is garbage. Any change you can improve it with different compile options?
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.
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?
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?
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.
Closing this because of Perry's latest comment. Ray, please feel free to reopen if needed.