Summary: | Memory Corruption compiled under MinGW | ||
---|---|---|---|
Product: | cairo | Reporter: | marcmicalizzi |
Component: | win32 backend | Assignee: | cairo-bugs mailing list <cairo-bugs> |
Status: | RESOLVED MOVED | QA Contact: | cairo-bugs mailing list <cairo-bugs> |
Severity: | normal | ||
Priority: | medium | ||
Version: | 1.12.2 | ||
Hardware: | All | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
marcmicalizzi
2012-05-10 12:47:23 UTC
The issue disappears when loading the precompiled 1.10.2 binaries from gtk.org for libcairo-2.dll, libcairo-gobject-2.dll and libcairo-script-interpreter-2.dll This might be fixed by some recent commits (first one is the most likely): http://cgit.freedesktop.org/cairo/commit/?id=50e51389bd4108942fdc7a5f029b3171b0c1f11a http://cgit.freedesktop.org/cairo/commit/?id=f4631dca371865f9aa747c61937c09d495f165e0 http://cgit.freedesktop.org/cairo/commit/?id=9ecf2f7c4f6451d4a2c145a82184ba185be0a421 Could you try again with latest git? make[4]: Entering directory `/cairo-latest/cairo/util/cairo-missing' CC strndup.lo In file included from strndup.c:31:0: cairo-missing.h:45:17: error: conflicting types for 'ssize_t' d:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/sys/types.h:118:18: note: previous declaration of 'ssize_t' was here from types.h: -- #ifndef _SSIZE_T_ #define _SSIZE_T_ typedef int _ssize_t; -- after modifying the line in cairo-missing.h to reflect, compile completed (this also occurs with 1.12.2 release). The memory corruption does not appear to be fixed, the gdb results are as follows: warning: HEAP[schedulerpp.exe]: warning: Heap block at 05AE3180 modified at 05AE33AC past requested size of 224 Program received signal SIGTRAP, Trace/breakpoint trap. 0x77590725 in ntdll!TpWaitForAlpcCompletion () from C:\Windows\system32\ntdll.dll (gdb) bt #0 0x77590725 in ntdll!TpWaitForAlpcCompletion () from C:\Windows\system32\ntdll.dll #1 0x0028cb00 in ?? () #2 0x77575582 in ntdll!RtlFillMemoryUlong () from C:\Windows\system32\ntdll.dll #3 0x05ae3180 in ?? () #4 0x7755292a in ntdll!RtlSetCurrentTransaction () from C:\Windows\system32\ntdll.dll #5 0x00000000 in ?? () (gdb) c Continuing. warning: HEAP[schedulerpp.exe]: warning: Invalid address specified to RtlFreeHeap( 03030000, 05AE3188 ) Program received signal SIGTRAP, Trace/breakpoint trap. 0x77590725 in ntdll!TpWaitForAlpcCompletion () from C:\Windows\system32\ntdll.dll (gdb) bt #0 0x77590725 in ntdll!TpWaitForAlpcCompletion () from C:\Windows\system32\ntdll.dll #1 0x0028cb20 in ?? () #2 0x7755295a in ntdll!RtlSelfRelativeToAbsoluteSD2 () from C:\Windows\system32\ntdll.dll #3 0x05ae3180 in ?? () #4 0x7759177f in ntdll!TpQueryPoolStackInformation () from C:\Windows\system32\ntdll.dll #5 0x03030000 in ?? () #6 0x7754a967 in ntdll!RtlReAllocateHeap () from C:\Windows\system32\ntdll.dll #7 0x03030000 in ?? () #8 0x774f2c02 in ntdll!RtlEncodePointer () from C:\Windows\system32\ntdll.dll #9 0x05ae3180 in ?? () #10 0x75e598cd in msvcrt!free () from C:\Windows\syswow64\msvcrt.dll #11 0x03030000 in ?? () #12 0x68e35f9d in _cairo_win32_display_surface_flush (abstract_surface=0x5ade5b8) at win32/cairo-win32-display-surface.c:558 #13 0x68e1013c in cairo_surface_flush (surface=0x5ade5b8) at cairo-surface.c:1411 #14 cairo_surface_flush (surface=0x5ade5b8) at cairo-surface.c:1396 #15 0x68e165fa in _cairo_surface_subsurface_flush (abstract_surface=0x5aeb730) at cairo-surface-subsurface.c:237 #16 0x68e1013c in cairo_surface_flush (surface=0x5aeb730) at cairo-surface.c:1411 #17 cairo_surface_flush (surface=0x5aeb730) at cairo-surface.c:1396 #18 0x68e10176 in _cairo_surface_finish_snapshots (surface=0x5aeb730) at cairo-surface.c:912 #19 0x68e1023f in cairo_surface_destroy (surface=0x5aeb730) at cairo-surface.c:860 #20 cairo_surface_destroy (surface=0x5aeb730) at cairo-surface.c:846 #21 0x0033811d in gdk_window_end_paint () from D:\MinGW\bin\libgdk-3-0.dll #22 0x035211d2 in gtk_main_do_event () from D:\MinGW\bin\libgtk-3-0.dll #23 0x0032b396 in _gdk_event_emit () from D:\MinGW\bin\libgdk-3-0.dll #24 0x00339239 in _gdk_window_process_updates_recurse () from D:\MinGW\bin\libgdk-3-0.dll #25 0x0033935a in _gdk_window_process_updates_recurse () from D:\MinGW\bin\libgdk-3-0.dll #26 0x0033935a in _gdk_window_process_updates_recurse () from D:\MinGW\bin\libgdk-3-0.dll #27 0x0033935a in _gdk_window_process_updates_recurse () from D:\MinGW\bin\libgdk-3-0.dll #28 0x003603b3 in gdk_win32_window_process_updates_recurse () from D:\MinGW\bin\libgdk-3-0.dll #29 0x003395c0 in gdk_window_process_updates_internal () from D:\MinGW\bin\libgdk-3-0.dll #30 0x00339821 in gdk_window_process_all_updates () from D:\MinGW\bin\libgdk-3-0.dll #31 0x0347e8a4 in gtk_container_idle_sizer () from D:\MinGW\bin\libgtk-3-0.dll #32 0x003216d2 in gdk_threads_dispatch () from D:\MinGW\bin\libgdk-3-0.dll #33 0x685f9f06 in g_idle_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #34 0x685f7d71 in g_main_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #35 0x685f8885 in g_main_context_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #36 0x685f8a60 in g_main_context_iterate () from D:\MinGW\bin\libglib-2.0-0.dll #37 0x685f8e4a in g_main_loop_run () from D:\MinGW\bin\libglib-2.0-0.dll #38 0x03520b62 in gtk_main () from D:\MinGW\bin\libgtk-3-0.dll #39 0x63ea214f in Gtk::Main::run_impl() () from D:\MinGW\bin\libgtkmm-3.0-1.dll #40 0x63ea209f in Gtk::Main::run(Gtk::Window&) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #41 0x0042c83c in AppSelectWindow::run_fmanage (this=0x28e5e4) at ..\src\Windows\AppSelectWindow.cpp:78 #42 0x00470892 in sigc::bound_mem_functor0<void, AppSelectWindow>::operator() (this=0x5a51bcc) at D:/MinGW/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787 #43 0x0046ffa8 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, AppSelectWindow> >::operator() (this=0x5a51bc8) at D:/MinGW/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251 #44 0x00467496 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, AppSelectWindow>, void>::call_it (rep=0x5a51bb0) at D:/MinGW/include/sigc++-2.0/sigc++/functors/slot.h:103 #45 0x664e23ce in sigc::slot0<void>::operator()() const () from D:\MinGW\bin\libglibmm-2.4-1.dll #46 0x664d70e5 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () from D:\MinGW\bin\libglibmm-2.4-1.dll #47 0x63a48743 in g_cclosure_marshal_VOID__VOID () from D:\MinGW\bin\libgobject-2.0-0.dll #48 0x63a4611c in g_closure_invoke () from D:\MinGW\bin\libgobject-2.0-0.dll #49 0x63a5d545 in signal_emit_unlocked_R () from D:\MinGW\bin\libgobject-2.0-0.dll #50 0x63a5c9f8 in g_signal_emit_valist () from D:\MinGW\bin\libgobject-2.0-0.dll #51 0x63a5cce1 in g_signal_emit () from D:\MinGW\bin\libgobject-2.0-0.dll #52 0x0343b72a in gtk_button_clicked () from D:\MinGW\bin\libgtk-3-0.dll #53 0x0343ca1a in gtk_real_button_released () from D:\MinGW\bin\libgtk-3-0.dll #54 0x63e58ed0 in Gtk::Button_Class::released_callback(_GtkButton*) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #55 0x63a487ab in g_cclosure_marshal_VOID__VOIDv () from D:\MinGW\bin\libgobject-2.0-0.dll #56 0x63a46715 in g_type_class_meta_marshalv () from D:\MinGW\bin\libgobject-2.0-0.dll #57 0x63a4635a in _g_closure_invoke_va () from D:\MinGW\bin\libgobject-2.0-0.dll #58 0x63a5c333 in g_signal_emit_valist () from D:\MinGW\bin\libgobject-2.0-0.dll #59 0x63a5cce1 in g_signal_emit () from D:\MinGW\bin\libgobject-2.0-0.dll #60 0x0343c61f in gtk_button_button_release () from D:\MinGW\bin\libgtk-3-0.dll #61 0x63f0ea01 in Gtk::Widget_Class::button_release_event_callback(_GtkWidget*, _GdkEventButton*) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #62 0x03522944 in _gtk_marshal_BOOLEAN__BOXEDv () from D:\MinGW\bin\libgtk-3-0.dll #63 0x63a46715 in g_type_class_meta_marshalv () from D:\MinGW\bin\libgobject-2.0-0.dll #64 0x63a4635a in _g_closure_invoke_va () from D:\MinGW\bin\libgobject-2.0-0.dll #65 0x63a5c333 in g_signal_emit_valist () from D:\MinGW\bin\libgobject-2.0-0.dll #66 0x63a5cce1 in g_signal_emit () from D:\MinGW\bin\libgobject-2.0-0.dll #67 0x0368826a in gtk_widget_event_internal () from D:\MinGW\bin\libgtk-3-0.dll #68 0x03687981 in gtk_widget_event () from D:\MinGW\bin\libgtk-3-0.dll #69 0x035223c7 in propagate_event_up () from D:\MinGW\bin\libgtk-3-0.dll #70 0x035226b3 in propagate_event () from D:\MinGW\bin\libgtk-3-0.dll #71 0x03522776 in gtk_propagate_event () from D:\MinGW\bin\libgtk-3-0.dll #72 0x035214ac in gtk_main_do_event () from D:\MinGW\bin\libgtk-3-0.dll #73 0x0032b396 in _gdk_event_emit () from D:\MinGW\bin\libgdk-3-0.dll #74 0x003538fe in gdk_event_dispatch () from D:\MinGW\bin\libgdk-3-0.dll #75 0x685f7d71 in g_main_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #76 0x685f8885 in g_main_context_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #77 0x685f8a60 in g_main_context_iterate () from D:\MinGW\bin\libglib-2.0-0.dll #78 0x685f8e4a in g_main_loop_run () from D:\MinGW\bin\libglib-2.0-0.dll #79 0x03520b62 in gtk_main () from D:\MinGW\bin\libgtk-3-0.dll #80 0x63ea214f in Gtk::Main::run_impl() () from D:\MinGW\bin\libgtkmm-3.0-1.dll #81 0x63ea209f in Gtk::Main::run(Gtk::Window&) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #82 0x0040dc5f in LoginWindow::login (this=0x28f898) at ..\src\Windows\LoginWindow.cpp:72 #83 0x004706ca in sigc::bound_mem_functor0<void, LoginWindow>::operator() (this=0x5a41b9c) at D:/MinGW/include/sigc++-2.0/sigc++/functors/mem_fun.h:1787 #84 0x0046ff18 in sigc::adaptor_functor<sigc::bound_mem_functor0<void, LoginWindow> >::operator() (this=0x5a41b98) at D:/MinGW/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251 #85 0x004673a6 in sigc::internal::slot_call0<sigc::bound_mem_functor0<void, LoginWindow>, void>::call_it (rep=0x5a41b80) at D:/MinGW/include/sigc++-2.0/sigc++/functors/slot.h:103 #86 0x664e23ce in sigc::slot0<void>::operator()() const () from D:\MinGW\bin\libglibmm-2.4-1.dll #87 0x664d70e5 in Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) () from D:\MinGW\bin\libglibmm-2.4-1.dll #88 0x63a48743 in g_cclosure_marshal_VOID__VOID () from D:\MinGW\bin\libgobject-2.0-0.dll #89 0x63a4611c in g_closure_invoke () from D:\MinGW\bin\libgobject-2.0-0.dll #90 0x63a5d545 in signal_emit_unlocked_R () from D:\MinGW\bin\libgobject-2.0-0.dll #91 0x63a5be78 in g_signal_emitv () from D:\MinGW\bin\libgobject-2.0-0.dll #92 0x0342bb68 in gtk_binding_entry_activate () from D:\MinGW\bin\libgtk-3-0.dll #93 0x0342d07c in binding_activate () from D:\MinGW\bin\libgtk-3-0.dll #94 0x0342d1dc in gtk_bindings_activate_list () from D:\MinGW\bin\libgtk-3-0.dll #95 0x0342d40d in gtk_bindings_activate_event () from D:\MinGW\bin\libgtk-3-0.dll #96 0x036875de in gtk_widget_real_key_press_event () from D:\MinGW\bin\libgtk-3-0.dll #97 0x034a15f9 in gtk_entry_key_press () from D:\MinGW\bin\libgtk-3-0.dll #98 0x63f0ef0b in Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #99 0x03522944 in _gtk_marshal_BOOLEAN__BOXEDv () from D:\MinGW\bin\libgtk-3-0.dll #100 0x63a46715 in g_type_class_meta_marshalv () from D:\MinGW\bin\libgobject-2.0-0.dll #101 0x63a4635a in _g_closure_invoke_va () from D:\MinGW\bin\libgobject-2.0-0.dll #102 0x63a5c333 in g_signal_emit_valist () from D:\MinGW\bin\libgobject-2.0-0.dll #103 0x63a5cce1 in g_signal_emit () from D:\MinGW\bin\libgobject-2.0-0.dll #104 0x0368826a in gtk_widget_event_internal () from D:\MinGW\bin\libgtk-3-0.dll #105 0x03687981 in gtk_widget_event () from D:\MinGW\bin\libgtk-3-0.dll #106 0x036a0b20 in gtk_window_propagate_key_event () from D:\MinGW\bin\libgtk-3-0.dll #107 0x036a0bd3 in gtk_window_key_press_event () from D:\MinGW\bin\libgtk-3-0.dll #108 0x63f15c2d in Gtk::Widget::on_key_press_event(_GdkEventKey*) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #109 0x63f0eecb in Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #110 0x03522944 in _gtk_marshal_BOOLEAN__BOXEDv () from D:\MinGW\bin\libgtk-3-0.dll #111 0x63a46715 in g_type_class_meta_marshalv () from D:\MinGW\bin\libgobject-2.0-0.dll #112 0x63a4635a in _g_closure_invoke_va () from D:\MinGW\bin\libgobject-2.0-0.dll #113 0x63a5c333 in g_signal_emit_valist () from D:\MinGW\bin\libgobject-2.0-0.dll #114 0x63a5cce1 in g_signal_emit () from D:\MinGW\bin\libgobject-2.0-0.dll #115 0x0368826a in gtk_widget_event_internal () from D:\MinGW\bin\libgtk-3-0.dll #116 0x03687981 in gtk_widget_event () from D:\MinGW\bin\libgtk-3-0.dll #117 0x03522666 in propagate_event () from D:\MinGW\bin\libgtk-3-0.dll #118 0x03522776 in gtk_propagate_event () from D:\MinGW\bin\libgtk-3-0.dll #119 0x035214ac in gtk_main_do_event () from D:\MinGW\bin\libgtk-3-0.dll #120 0x0032b396 in _gdk_event_emit () from D:\MinGW\bin\libgdk-3-0.dll #121 0x003538fe in gdk_event_dispatch () from D:\MinGW\bin\libgdk-3-0.dll #122 0x685f7d71 in g_main_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #123 0x685f8885 in g_main_context_dispatch () from D:\MinGW\bin\libglib-2.0-0.dll #124 0x685f8a60 in g_main_context_iterate () from D:\MinGW\bin\libglib-2.0-0.dll #125 0x685f8e4a in g_main_loop_run () from D:\MinGW\bin\libglib-2.0-0.dll #126 0x03520b62 in gtk_main () from D:\MinGW\bin\libgtk-3-0.dll #127 0x63ea214f in Gtk::Main::run_impl() () from D:\MinGW\bin\libgtkmm-3.0-1.dll #128 0x63ea209f in Gtk::Main::run(Gtk::Window&) () from D:\MinGW\bin\libgtkmm-3.0-1.dll #129 0x00401c73 in _fu98___ZSt3cin () at ..\src\schedulerpp.cpp:77 (gdb) Also using bt full, the following locals are available, incase that helps #12 0x68e35f9d in _cairo_win32_display_surface_flush (abstract_surface=0x5ade5b8) at win32/cairo-win32-display-surface.c:558 fallback = 0x5ae27c0 damage = 0x3030000 surface = 0x5ade5b8 status = <optimized out> __FUNCTION__.23054 = "_cairo_win32_display_surface_flush" #13 0x68e1013c in cairo_surface_flush (surface=0x5ade5b8) at cairo-surface.c:1411 status = <optimized out> #14 cairo_surface_flush (surface=0x5ade5b8) at cairo-surface.c:1396 No locals. #15 0x68e165fa in _cairo_surface_subsurface_flush (abstract_surface=0x5aeb730) at cairo-surface-subsurface.c:237 surface = 0x5aeb730 #16 0x68e1013c in cairo_surface_flush (surface=0x5aeb730) at cairo-surface.c:1411 status = <optimized out> I am also affected by this (Audacious on Windows crashes on startup with Cairo 1.12.2 but has no problems with 1.10.2); I am running a Git bisect to find the commit that caused this regression. Git bisect shows that there was no problem until commit 2f020c4ade1d26a01605cd908bdaa983e7fe1106, when Cairo would no longer compile under Win32. 93 commits later, with commit bbacfc4e836ab09896b0ca3da9d90b582e35748c, Cairo could be compiled again but would crash (as the commit message indicates). Obviously I haven't tested every single revision after this, but it seems as though Cairo has not worked correctly on Win32 since then. For me this is fixed by commit fb8881e84bb2 (bug #63787). marcmicalizzi: Does that commit also fix this problem for you? -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/cairo/cairo/issues/88. |
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.