How does cacheDisplayInRect work internally? - objective-c

How does [NSView cacheDisplayInRect:(NSRect)rect toBitmapImageRep:(NSBitmapImageRep *)bitmapImageRep] work internally when writes the bitmap data to the bitmapImageRep?
E.g. does it traverse and access the CALayer layer of all the subviews and combine them when ...cacheDisplayInRect... is called or does it simply write it's own layer (which then is already contains the representation data for all subviews).
Background to my question: I use a native control (WKWebView) that is broken when it comes to screenshots (example SO question), and instead of reinventing the wheel to take an screenshot of the whole app including the WKWebView I would like to fix the method that Cocoa uses for bitmap representations.

I did some trial and error and figured out that both ...cacheDisplayInRect... and ...drawInContext... calls - [NSView drawRect:] internally to render the elements.
- [CALayer drawInContext:context] call stack
#0 0x000000010000e28c in -[DXSecureWKWebView drawRect:] at /Users/x/dev/X/XSecureWKWebView.m:34
#1 0x00007fff8d386749 in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] ()
#2 0x00007fff8d386afe in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] ()
#3 0x00007fff8d386afe in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] ()
#4 0x00007fff8d386168 in __46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke ()
#5 0x00007fff8d385e11 in -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] ()
#6 0x00007fff8d385493 in -[NSView(NSLayerKitGlue) drawLayer:inContext:] ()
- [NSView cacheDisplayInRect:toBitmapImageRep:] call stack
#0 0x000000010000e2dc in -[XSecureWKWebView drawRect:] at /Users/x/dev/x/XSecureWKWebView.m:34
#1 0x00007fff8d386749 in -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] ()
#2 0x00007fff8d65fe1c in __50-[_NSViewBackingLayer _renderForegroundInContext:]_block_invoke ()
#3 0x00007fff8d385e11 in -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] ()
#4 0x00007fff8d50b740 in -[_NSViewBackingLayer _renderForegroundInContext:] ()
#5 0x00007fff934f5ce1 in -[CALayer renderInContext:] ()
#6 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#7 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#8 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#9 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#10 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#11 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#12 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#13 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#14 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#15 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#16 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#17 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#18 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#19 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#20 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#21 0x00007fff934f7aaf in -[CALayer _renderSublayersInContext:] ()
#22 0x00007fff8d50b807 in -[_NSViewBackingLayer _renderSublayersInContext:] ()
#23 0x00007fff934f5cf0 in -[CALayer renderInContext:] ()
#24 0x00007fff8d50b11d in -[NSView _layerBackedDisplayRectIgnoringOpacity:inContext:isRootView:flipContextIfNeedeed:] ()
#25 0x00007fff8d50ac74 in -[NSView displayRectIgnoringOpacity:inContext:] ()
#26 0x00007fff8d65f685 in __62-[NSView cacheDisplayInRect:toBitmapImageRep:includeSubviews:]_block_invoke ()
#27 0x00007fff8d65f3dc in __36-[NSBitmapImageRep _captureDrawing:]_block_invoke ()
#28 0x00007fff8d65f14c in -[NSBitmapImageRep _captureDrawing:] ()
#29 0x00007fff8d65f079 in -[NSView cacheDisplayInRect:toBitmapImageRep:includeSubviews:] ()

Related

object->ref_count > 0 Assertion failures when using webkitgtk

I'm experimenting with an app that creates a tray menu. One of the tray menu items creates a window that connects to a login service. However, I'm getting assertion failures despite the fact that it otherwise appears to work. I must be doing something simple that is wrong, but what?
The below program demonstrates the problem.
test.cpp
#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
GtkWidget * web_window = NULL;
WebKitWebView * web_view = NULL;
gtk_init(0L, 0L);
if (web_window = gtk_window_new(GTK_WINDOW_TOPLEVEL)){
//g_object_ref(G_OBJECT(web_window));
gtk_window_set_default_size(GTK_WINDOW(web_window), 800, 600);
g_signal_connect(web_window, "delete_event", G_CALLBACK(gtk_widget_hide_on_delete), NULL);
if (web_view = WEBKIT_WEB_VIEW(webkit_web_view_new())){
//g_object_ref(G_OBJECT(web_view));
gtk_window_set_title(GTK_WINDOW(web_window), "Web View Test");
gtk_container_add(GTK_CONTAINER(web_window), GTK_WIDGET(web_view));
webkit_web_view_load_uri(web_view, "http://www.google.com/");
gtk_widget_grab_focus(GTK_WIDGET(web_view));
gtk_widget_show_all(web_window);
gtk_window_present(GTK_WINDOW(web_window));
gtk_main();
}
else
printf("Failed to create WebView\n");
}
return 0;
}
Compiled with:
g++ test.cpp $(pkg-config --cflags --libs webkitgtk-3.0) $(pkg-config --cflags --libs gtk+-3.0)
After the window is opened and the URL is loaded I see these assertion failures:
(a.out:20179): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed
(a.out:20179): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed
When I then click the close button (which should hide the window) I then see these assertion failures:
(a.out:20179): GLib-GObject-CRITICAL **: g_object_ref: assertion 'object->ref_count > 0' failed
(a.out:20179): GLib-GObject-CRITICAL **: g_object_unref: assertion 'object->ref_count > 0' failed
As you can see I tried adding ref counts to the web_window and web_view to see if that was where the problem is, but it made no difference.
Turning on G_DEBUG=fatal-warnings produced a core dump which I backtraced with gdb below.
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
#0 0x00007fdd04662c13 in g_logv () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
(gdb) bt
#0 0x00007fdd04662c13 in g_logv () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1 0x00007fdd04662d72 in g_log () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2 0x00007fdd090c9aea in g_object_ref ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#3 0x00007fdd090de05f in g_signal_emit_valist ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#4 0x00007fdd090dece2 in g_signal_emit ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#5 0x00007fdd095345e6 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#6 0x00007fdd0953609a in gtk_style_context_invalidate ()
from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#7 0x00007fdd09537e4c in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#8 0x00007fdd090c9dba in g_object_unref ()
from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007fdd08440133 in derefGPtr<_GtkStyleContext> (ptr=<optimized out>)
at ../Source/WTF/wtf/gobject/GRefPtr.h:235
#10 ~GRefPtr (this=0x7ffd0e22c3d0, __in_chrg=<optimized out>)
at ../Source/WTF/wtf/gobject/GRefPtr.h:70
#11 WebCore::styleColor (themePart=themePart#entry=WebCore::Entry,
state=state#entry=(GTK_STATE_FLAG_SELECTED | GTK_STATE_FLAG_FOCUSED),
colorType=colorType#entry=WebCore::StyleColorForeground)
at ../Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:1098
#12 0x00007fdd084401f5 in WebCore::RenderThemeGtk::platformActiveSelectionForegr---Type <return> to continue, or q <return> to quit---
oundColor (this=<optimized out>)
at ../Source/WebCore/platform/gtk/RenderThemeGtk3.cpp:1121
#13 0x00007fdd07dba689 in WebCore::RenderTheme::activeSelectionForegroundColor
(this=0x7fdcf40e2870) at ../Source/WebCore/rendering/RenderTheme.cpp:567
#14 0x00007fdd07d6e521 in WebCore::RenderObject::selectionColor (
this=0x7fdc811b4738, colorProperty=335)
at ../Source/WebCore/rendering/RenderObject.cpp:1462
#15 0x00007fdd07d6e55e in WebCore::RenderObject::selectionForegroundColor (
this=this#entry=0x7fdc811b4738)
at ../Source/WebCore/rendering/RenderObject.cpp:1469
#16 0x00007fdd07de27c4 in WebCore::computeTextSelectionPaintStyle (
textPaintStyle=..., renderer=..., lineStyle=..., paintInfo=...,
paintSelectedTextOnly=#0x7ffd0e22c5f1: false,
paintSelectedTextSeparately=#0x7ffd0e22c5f2: false,
selectionShadow=#0x7ffd0e22c628: 0x0)
at ../Source/WebCore/rendering/TextPaintStyle.cpp:127
#17 0x00007fdd07c5265a in WebCore::InlineTextBox::paint (this=0x1956f60,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/InlineTextBox.cpp:575
#18 0x00007fdd07c4bc91 in WebCore::InlineFlowBox::paint (
this=this#entry=0x1956fc0, paintInfo=..., paintOffset=..., lineTop=...,
lineTop#entry=..., lineBottom=..., lineBottom#entry=...)
at ../Source/WebCore/rendering/InlineFlowBox.cpp:1162
---Type <return> to continue, or q <return> to quit---
#19 0x00007fdd07dd46c1 in WebCore::RootInlineBox::paint (this=0x1956fc0,
paintInfo=..., paintOffset=..., lineTop=..., lineBottom=...)
at ../Source/WebCore/rendering/RootInlineBox.cpp:210
#20 0x00007fdd07d4252e in WebCore::RenderLineBoxList::paint (
this=0x7fdc811b62e0, renderer=0x7fdc811b6240, paintInfo=...,
paintOffset=...) at ../Source/WebCore/rendering/RenderLineBoxList.cpp:265
#21 0x00007fdd07c59759 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc811b6240, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2373
#22 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b6240, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#23 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b6240,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#24 0x00007fdd07c42b4c in WebCore::InlineElementBox::paint (this=0x195b4c0,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/InlineElementBox.cpp:88
#25 0x00007fdd07c4bc91 in WebCore::InlineFlowBox::paint (
this=this#entry=0x195b500, paintInfo=..., paintOffset=..., lineTop=...,
lineTop#entry=..., lineBottom=..., lineBottom#entry=...)
at ../Source/WebCore/rendering/InlineFlowBox.cpp:1162
#26 0x00007fdd07dd46c1 in WebCore::RootInlineBox::paint (this=0x195b500,
---Type <return> to continue, or q <return> to quit---
paintInfo=..., paintOffset=..., lineTop=..., lineBottom=...)
at ../Source/WebCore/rendering/RootInlineBox.cpp:210
#27 0x00007fdd07d4252e in WebCore::RenderLineBoxList::paint (
this=0x7fdc811b63a0, renderer=0x7fdc811b6300, paintInfo=...,
paintOffset=...) at ../Source/WebCore/rendering/RenderLineBoxList.cpp:265
#28 0x00007fdd07c59759 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc811b6300, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2373
#29 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b6300, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#30 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b6300,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#31 0x00007fdd07c5988a in WebCore::RenderBlock::paintChild (
this=this#entry=0x7fdc811b63c0, child=..., paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=usePrintRect#entry=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2423
#32 0x00007fdd07c59b72 in WebCore::RenderBlock::paintChildren (
this=0x7fdc811b63c0, paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2393
#33 0x00007fdd07c59730 in WebCore::RenderBlock::paintContents (
---Type <return> to continue, or q <return> to quit---
this=this#entry=0x7fdc811b63c0, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2386
#34 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b63c0, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#35 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b63c0,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#36 0x00007fdd07c5988a in WebCore::RenderBlock::paintChild (
this=this#entry=0x7fdc811b69c0, child=..., paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=usePrintRect#entry=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2423
#37 0x00007fdd07c59b72 in WebCore::RenderBlock::paintChildren (
this=0x7fdc811b69c0, paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2393
#38 0x00007fdd07c59730 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc811b69c0, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2386
#39 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b69c0, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#40 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b69c0,
---Type <return> to continue, or q <return> to quit---
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#41 0x00007fdd07c5988a in WebCore::RenderBlock::paintChild (
this=this#entry=0x7fdc811b6a80, child=..., paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=usePrintRect#entry=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2423
#42 0x00007fdd07c59b72 in WebCore::RenderBlock::paintChildren (
this=0x7fdc811b6a80, paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2393
#43 0x00007fdd07c59730 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc811b6a80, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2386
#44 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b6a80, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#45 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b6a80,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#46 0x00007fdd07c5988a in WebCore::RenderBlock::paintChild (
this=this#entry=0x7fdc811b6b40, child=..., paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=usePrintRect#entry=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2423
---Type <return> to continue, or q <return> to quit---
#47 0x00007fdd07c59b72 in WebCore::RenderBlock::paintChildren (
this=0x7fdc811b6b40, paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2393
#48 0x00007fdd07c59730 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc811b6b40, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2386
#49 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc811b6b40, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#50 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc811b6b40,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#51 0x00007fdd07c5988a in WebCore::RenderBlock::paintChild (
this=this#entry=0x7fdc98144540, child=..., paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=usePrintRect#entry=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2423
#52 0x00007fdd07c59b72 in WebCore::RenderBlock::paintChildren (
this=0x7fdc98144540, paintInfo=..., paintOffset=...,
paintInfoForChild=..., usePrintRect=false)
at ../Source/WebCore/rendering/RenderBlock.cpp:2393
#53 0x00007fdd07c59730 in WebCore::RenderBlock::paintContents (
this=this#entry=0x7fdc98144540, paintInfo=..., paintOffset=...)
---Type <return> to continue, or q <return> to quit---
at ../Source/WebCore/rendering/RenderBlock.cpp:2386
#54 0x00007fdd07c6a473 in WebCore::RenderBlock::paintObject (
this=0x7fdc98144540, paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2509
#55 0x00007fdd07c57135 in WebCore::RenderBlock::paint (this=0x7fdc98144540,
paintInfo=..., paintOffset=...)
at ../Source/WebCore/rendering/RenderBlock.cpp:2186
#56 0x00007fdd07d15c74 in WebCore::RenderLayer::paintForegroundForFragmentsWithPhase (this=this#entry=0x193c340,
phase=phase#entry=WebCore::PaintPhaseForeground, layerFragments=...,
context=context#entry=0x7ffd0e22e7c0, localPaintingInfo=...,
paintBehavior=paintBehavior#entry=0,
subtreePaintRootForRenderer=subtreePaintRootForRenderer#entry=0x0)
at ../Source/WebCore/rendering/RenderLayer.cpp:4477
#57 0x00007fdd07d1aad6 in WebCore::RenderLayer::paintForegroundForFragments (
this=this#entry=0x193c340, layerFragments=...,
context=context#entry=0x7ffd0e22e7c0,
transparencyLayerContext=transparencyLayerContext#entry=0x7ffd0e22e7c0,
transparencyPaintDirtyRect=...,
haveTransparency=haveTransparency#entry=false, localPaintingInfo=...,
paintBehavior=paintBehavior#entry=0,
subtreePaintRootForRenderer=subtreePaintRootForRenderer#entry=0x0,
selectionOnly=selectionOnly#entry=false,
---Type <return> to continue, or q <return> to quit---
forceBlackText=forceBlackText#entry=false)
at ../Source/WebCore/rendering/RenderLayer.cpp:4441
#58 0x00007fdd07d27406 in WebCore::RenderLayer::paintLayerContents (
this=this#entry=0x193c340, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:4162
#59 0x00007fdd07d27a7f in WebCore::RenderLayer::paintLayerContentsAndReflection
(this=this#entry=0x193c340, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=paintFlags#entry=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:3858
#60 0x00007fdd07d283d9 in WebCore::RenderLayer::paintLayer (
this=this#entry=0x193c340, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=paintFlags#entry=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:3839
#61 0x00007fdd07d29d02 in WebCore::RenderLayer::paintList (this=0x192bcd0,
list=0x7fdc8115a830, context=0x7ffd0e22e7c0, paintingInfo=...,
paintFlags=224) at ../Source/WebCore/rendering/RenderLayer.cpp:4255
#62 0x00007fdd07d27520 in WebCore::RenderLayer::paintLayerContents (
this=this#entry=0x192bcd0, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:4173
#63 0x00007fdd07d27a7f in WebCore::RenderLayer::paintLayerContentsAndReflection
(this=this#entry=0x192bcd0, context=context#entry=0x7ffd0e22e7c0,
---Type <return> to continue, or q <return> to quit---
paintingInfo=..., paintFlags=paintFlags#entry=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:3858
#64 0x00007fdd07d283d9 in WebCore::RenderLayer::paintLayer (
this=this#entry=0x192bcd0, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=paintFlags#entry=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:3839
#65 0x00007fdd07d29d02 in WebCore::RenderLayer::paintList (this=0x180d8f0,
list=0x7fdc8115a840, context=0x7ffd0e22e7c0, paintingInfo=...,
paintFlags=224) at ../Source/WebCore/rendering/RenderLayer.cpp:4255
#66 0x00007fdd07d27520 in WebCore::RenderLayer::paintLayerContents (
this=this#entry=0x180d8f0, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=224)
at ../Source/WebCore/rendering/RenderLayer.cpp:4173
#67 0x00007fdd07d27a7f in WebCore::RenderLayer::paintLayerContentsAndReflection
(this=this#entry=0x180d8f0, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=paintFlags#entry=0)
at ../Source/WebCore/rendering/RenderLayer.cpp:3858
#68 0x00007fdd07d283d9 in WebCore::RenderLayer::paintLayer (
this=this#entry=0x180d8f0, context=context#entry=0x7ffd0e22e7c0,
paintingInfo=..., paintFlags=paintFlags#entry=0)
at ../Source/WebCore/rendering/RenderLayer.cpp:3839
#69 0x00007fdd07d2867e in WebCore::RenderLayer::paint (
this=this#entry=0x180d8f0, context=context#entry=0x7ffd0e22e7c0,
---Type <return> to continue, or q <return> to quit---
damageRect=..., paintBehavior=0,
subtreePaintRoot=subtreePaintRoot#entry=0x0, region=region#entry=0x0,
paintFlags=paintFlags#entry=0)
at ../Source/WebCore/rendering/RenderLayer.cpp:3623
#70 0x00007fdd07bdda1d in WebCore::FrameView::paintContents (
this=0x7fdcf40dd800, p=0x7ffd0e22e7c0, rect=...)
at ../Source/WebCore/page/FrameView.cpp:3507
#71 0x00007fdd082ef894 in WebCore::ScrollView::paint (this=0x7fdcf40dd800,
context=0x7ffd0e22e7c0, rect=...)
at ../Source/WebCore/platform/ScrollView.cpp:1162
#72 0x00007fdd074bc3bb in paintWebView (dirtyRegion=..., frame=0x7fdcf40f5c00,
webView=0x17dc440)
at ../Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:588
#73 WebKit::ChromeClient::paint (this=0x173da00)
at ../Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:631
#74 0x00007fdd075c67b1 in WebCore::ThreadTimers::sharedTimerFiredInternal (
this=0x7fdcf4108f50) at ../Source/WebCore/platform/ThreadTimers.cpp:132
#75 0x00007fdd075dea62 in WebCore::sharedTimerTimeoutCallback ()
at ../Source/WebCore/platform/gtk/SharedTimerGtk.cpp:49
#76 0x00007fdd0465c703 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#77 0x00007fdd0465bce5 in g_main_context_dispatch ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#78 0x00007fdd0465c048 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#79 0x00007fdd0465c30a in g_main_loop_run ()
from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#80 0x00007fdd094a6e25 in gtk_main ()
from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#81 0x0000000000400d52 in main ()
It's natural to think that you are doing something wrong but when it comes to GLib-GObject-CRITICAL failures the issue has little, if anything, to do with your code and more to do with the GNOME ecosystem.
For instance, I can reproduce this issue with both well established projects and barebone GTK+ 3 applications in C++/Python by running them on older versions of GNOME but the issue goes away with a recent version of GNOME.
Since I didn't modify the code between tests then the code must be fine.
If you develop with planned obsolescence in mind, forcing users of your software to upgrade GNOME in order to use it then this is probably non-issue nowadays.
But if you are developing against an older version of GNOME or for some reason this (or a new) GLib-GObject-CRITICAL failure is present with a recent version of GNOME then the easiest solution is to filter it out.
Personally, I would unit test where applicable and ignore the following GLib-GObject-CRITICAL failure patterns:
object->ref_count > 0
source->priv != NULL

Infrequent crash when redrawing the screen with wxWidgets

I'm getting a very infrequent ( once every 10-15 days ) crash of my application. Based on the core dump backtrace, its crashing while redrawing the UI during the function cairo_pattern_destroy.
wxWidgets version 2.95
cairo version 1.8.0
Fedora core 10
LXDE windows manager
Here is the full backtrace for one of the crashes. I have 3 of them and they all end at __libc_free in cairo_pattern_destroy. If anyone has any suggestions it would be greatly appreciated.
#0 __libc_free (mem=0x7) at malloc.c:3599
3599 if (chunk_is_mmapped(p)) /* release mmapped memory. */
(gdb) bt
#0 __libc_free (mem=0x7) at malloc.c:3599
#1 0x00ff76d6 in cairo_pattern_destroy (pattern=0xc7b5088)
at cairo-pattern.c:738
#2 0x00fe7a5d in _cairo_gstate_fini (gstate=0xd20bc00) at cairo-gstate.c:204
#3 0x00fe7a98 in _cairo_gstate_restore (gstate=0x0, freelist=0xdb2e1f4)
at cairo-gstate.c:260
#4 0x00fe1ffd in cairo_restore (cr=0xdb2e070) at cairo.c:363
#5 0x07881fe2 in gdk_pango_renderer_draw_glyphs (renderer=0xc50d800,
font=0xa29d808, glyphs=0xceed960, x=129024, y=91136) at gdkpango.c:247
#6 0x07d345ea in pango_renderer_draw_glyphs (renderer=0xc50d800,
font=0xa29d808, glyphs=0xceed960, x=129024, y=91136)
at pango-renderer.c:639
#7 0x07d3466e in pango_renderer_default_draw_glyph_item (renderer=0xc50d800,
text=0xd411b00 "Pause", glyph_item=0xb2e11d80, x=129024, y=91136)
at pango-renderer.c:715
#8 0x07d3455a in pango_renderer_draw_glyph_item (renderer=0xc50d800,
text=0xd411b00 "Pause", glyph_item=0xb2e11d80, x=129024, y=91136)
at pango-renderer.c:703
#9 0x07d34dd3 in pango_renderer_draw_layout_line (renderer=0xc50d800,
line=0xd242648, x=129024, y=91136) at pango-renderer.c:568
#10 0x07d350e1 in pango_renderer_draw_layout (renderer=0xc50d800,
layout=0xd5a5e10, x=129024, y=77824) at pango-renderer.c:192
#11 0x07880f11 in IA__gdk_draw_layout_with_colors (drawable=0xc690580,
---Type <return> to continue, or q <return> to quit---
gc=0xa26f050, x=126, y=76, layout=0xd5a5e10, foreground=0x0,
background=0x0) at gdkpango.c:951
#12 0x078810c1 in IA__gdk_draw_layout (drawable=0xc690580, gc=0xa26f050,
x=126, y=76, layout=0xd5a5e10) at gdkpango.c:1013
#13 0x07a96e92 in gtk_default_draw_layout (style=0xa360500, window=0xc690580,
state_type=GTK_STATE_INSENSITIVE, use_text=0, area=0xcdf165c,
widget=0xd7afa60, detail=0x7c42081 "label", x=126, y=76, layout=0xda63110)
at gtkstyle.c:5084
#14 0x07a92fa2 in IA__gtk_paint_layout (style=0xa360500, window=0xc690580,
state_type=GTK_STATE_INSENSITIVE, use_text=0, area=0xcdf165c,
widget=0xd7afa60, detail=0x7c42081 "label", x=126, y=76, layout=0xda63110)
at gtkstyle.c:6401
#15 0x07a0ea9c in gtk_label_expose (widget=0xd7afa60, event=0xcdf1650)
at gtklabel.c:2848
#16 0x07a1e116 in _gtk_marshal_BOOLEAN__BOXED (closure=0xa1daae8,
return_value=0xbfae5910, n_param_values=2, param_values=0xdb00740,
invocation_hint=0xbfae58fc, marshal_data=0x7a0e990) at gtkmarshalers.c:84
#17 0x05a80959 in g_type_class_meta_marshal (closure=0xa1daae8,
return_value=0xbfae5910, n_param_values=2, param_values=0xdb00740,
invocation_hint=0xbfae58fc, marshal_data=0xc8) at gclosure.c:878
#18 0x05a82108 in IA__g_closure_invoke (closure=0xa1daae8,
return_value=0xbfae5910, n_param_values=2, param_values=0xdb00740,
invocation_hint=0xbfae58fc) at gclosure.c:767
---Type <return> to continue, or q <return> to quit---
#19 0x05a982cd in signal_emit_unlocked_R (node=0xa1dabe0, detail=0,
instance=0xd7afa60, emission_return=0xbfae5a48,
instance_and_params=0xdb00740) at gsignal.c:3282
#20 0x05a99bbb in IA__g_signal_emit_valist (instance=0xd7afa60, signal_id=38,
detail=0, var_args=0xbfae5aa0 "�Z��P\026�\f`�z\r�\225�\a`�z\rho\035\n")
at gsignal.c:2987
#21 0x05a9a1b6 in IA__g_signal_emit (instance=0xd7afa60, signal_id=38,
detail=0) at gsignal.c:3034
#22 0x07b333ae in gtk_widget_event_internal (widget=0xd7afa60, event=0xcdf1650)
at gtkwidget.c:4745
#23 0x079941a3 in IA__gtk_container_propagate_expose (container=0xc050930,
child=0xd7afa60, event=0xda6fdf8) at gtkcontainer.c:2687
#24 0x079941d1 in gtk_container_expose_child (child=0xd7afa60,
client_data=0xbfae5b68) at gtkcontainer.c:2575
#25 0x0795e61d in gtk_bin_forall (container=0xc050930, include_internals=1,
callback=0x79941b0 <gtk_container_expose_child>, callback_data=0xbfae5b68)
at gtkbin.c:128
#26 0x07994d66 in IA__gtk_container_forall (container=0xc050930,
callback=0x79941b0 <gtk_container_expose_child>, callback_data=0xbfae5b68)
at gtkcontainer.c:1455
#27 0x07996450 in gtk_container_expose (widget=0xc050930, event=0xda6fdf8)
at gtkcontainer.c:2598
#28 0x079689b1 in gtk_button_expose (widget=0xc050930, event=0xda6fdf8)
---Type <return> to continue, or q <return> to quit---
at gtkbutton.c:1348
#29 0x07a1e116 in _gtk_marshal_BOOLEAN__BOXED (closure=0xa1daae8,
return_value=0xbfae5d70, n_param_values=2, param_values=0xd6b2140,
invocation_hint=0xbfae5d5c, marshal_data=0x7968930) at gtkmarshalers.c:84
#30 0x05a80959 in g_type_class_meta_marshal (closure=0xa1daae8,
return_value=0xbfae5d70, n_param_values=2, param_values=0xd6b2140,
invocation_hint=0xbfae5d5c, marshal_data=0xc8) at gclosure.c:878
#31 0x05a82108 in IA__g_closure_invoke (closure=0xa1daae8,
return_value=0xbfae5d70, n_param_values=2, param_values=0xd6b2140,
invocation_hint=0xbfae5d5c) at gclosure.c:767
#32 0x05a982cd in signal_emit_unlocked_R (node=0xa1dabe0, detail=0,
instance=0xc050930, emission_return=0xbfae5ea8,
instance_and_params=0xd6b2140) at gsignal.c:3282
#33 0x05a99bbb in IA__g_signal_emit_valist (instance=0xc050930, signal_id=38,
detail=0,
var_args=0xbfae5f00 "\030_�����\r0\t\005\f�\225�\a0\t\005\fho\035\n")
at gsignal.c:2987
#34 0x05a9a1b6 in IA__g_signal_emit (instance=0xc050930, signal_id=38,
detail=0) at gsignal.c:3034
#35 0x07b333ae in gtk_widget_event_internal (widget=0xc050930, event=0xda6fdf8)
at gtkwidget.c:4745
#36 0x079941a3 in IA__gtk_container_propagate_expose (container=0xc010228,
child=0xc050930, event=0xbfae63f4) at gtkcontainer.c:2687
---Type <return> to continue, or q <return> to quit---
#37 0x079941d1 in gtk_container_expose_child (child=0xc050930,
client_data=0xbfae5fd8) at gtkcontainer.c:2575
#38 0x079d2f79 in gtk_fixed_forall (container=0xc010228, include_internals=1,
callback=0x79941b0 <gtk_container_expose_child>, callback_data=0xbfae5fd8)
at gtkfixed.c:449
#39 0x07994d66 in IA__gtk_container_forall (container=0xc010228,
callback=0x79941b0 <gtk_container_expose_child>, callback_data=0xbfae5fd8)
at gtkcontainer.c:1455
#40 0x07996450 in gtk_container_expose (widget=0xc010228, event=0xbfae63f4)
at gtkcontainer.c:2598
#41 0x07a1e116 in _gtk_marshal_BOOLEAN__BOXED (closure=0xa1daae8,
return_value=0xbfae61b0, n_param_values=2, param_values=0xd1e88c8,
invocation_hint=0xbfae619c, marshal_data=0x79963b0) at gtkmarshalers.c:84
#42 0x05a80959 in g_type_class_meta_marshal (closure=0xa1daae8,
return_value=0xbfae61b0, n_param_values=2, param_values=0xd1e88c8,
invocation_hint=0xbfae619c, marshal_data=0xc8) at gclosure.c:878
#43 0x05a821db in IA__g_closure_invoke (closure=0xa1daae8,
return_value=0xbfae61b0, n_param_values=2, param_values=0xd1e88c8,
invocation_hint=0xbfae619c) at gclosure.c:767
#44 0x05a982cd in signal_emit_unlocked_R (node=0xa1dabe0, detail=0,
instance=0xc010228, emission_return=0xbfae62e8,
instance_and_params=0xd1e88c8) at gsignal.c:3282
#45 0x05a99bbb in IA__g_signal_emit_valist (instance=0xc010228, signal_id=38,
---Type <return> to continue, or q <return> to quit---
detail=0,
var_args=0xbfae6340 "Xc���c��(\002\001\f�\225�\a(\002\001\fho\035\n")
at gsignal.c:2987
#46 0x05a9a1b6 in IA__g_signal_emit (instance=0xc010228, signal_id=38,
detail=0) at gsignal.c:3034
#47 0x07b333ae in gtk_widget_event_internal (widget=0xc010228,
event=0xbfae63f4) at gtkwidget.c:4745
#48 0x07a1821d in IA__gtk_main_do_event (event=0xbfae63f4) at gtkmain.c:1553
#49 0x07892625 in gdk_window_process_updates_internal (window=0xc690580)
at gdkwindow.c:2598
#50 0x07892c3f in IA__gdk_window_process_all_updates () at gdkwindow.c:2664
#51 0x07994eff in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:1309
#52 0x078760cb in gdk_threads_dispatch (data=0xc935530) at gdk.c:473
#53 0x066122d1 in g_idle_dispatch (source=0xd663908, callback=0xffffffff,
user_data=0xc935530) at gmain.c:4235
#54 0x06614208 in g_main_dispatch () at gmain.c:2144
#55 IA__g_main_context_dispatch (context=0xa1d5508) at gmain.c:2697
#56 0x066178b3 in g_main_context_iterate (context=0xa1d5508, block=1,
dispatch=1, self=0xa1ba5e0) at gmain.c:2778
#57 0x06617dd2 in IA__g_main_loop_run (loop=0xbb03cc0) at gmain.c:2986
#58 0x07a18489 in IA__gtk_main () at gtkmain.c:1200
#59 0x006b333d in wxGUIEventLoop::DoRun ()
from /usr/local/lib/libwx_gtk2u_core-2.9.so.5
This is an old question, so no one may actually be interested in the answer. I ran into this on an older version of Fedora 10 LXDE, with a very similar stack trace, and a crash in the same place. This turns out to be a design problem with Cairo 1.8.0.
Looking a frame 1 in my case, I see the following code:
734 i = solid_pattern_cache.size++ %
735 ARRAY_LENGTH (solid_pattern_cache.patterns);
736 /* swap an old pattern for this 'cache-hot' pattern */
737 if (solid_pattern_cache.patterns[i])
738 free (solid_pattern_cache.patterns[i]);
739
740 solid_pattern_cache.patterns[i] = (cairo_solid_pattern_t *) pattern;
They are using a counter with modular arithmetic to form the index into a fixed size cache. The counter is declared as a signed integer:
(gdb) ptype solid_pattern_cache
type = struct {
cairo_solid_pattern_t *patterns[4];
int size;
}
In my case, the counter has overflowed, resulting in a negative index into the cache. This results in attempting to free a random address.
(gdb) p solid_pattern_cache
$2 = {patterns = {0xb441b5e0, 0xb4983688, 0xb495bf58, 0xb3978388},
size = -2147483644}
(gdb) p /x solid_pattern_cache.size
$4 = 0x80000004
It's not clear to me why an unsigned counter was not used instead.

Magento - 1064 You have an error in your SQL syntax Error

I get quite a few of the below errors in my Magento exception log. Does anyone know how I would go about fixing this?
2011-12-10T22:13:41+00:00 ERR (3):
exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1' in /home/mysite/public_html/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /home/mysite/public_html/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/mysite/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/mysite/public_html/lib/Zend/Db/Statement.php(300): Varien_Db_Statement_Pdo_Mysql->_execute(Array)
#3 /home/mysite/public_html/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#4 /home/mysite/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `catalog...', Array)
#5 /home/mysite/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(389): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `catalog...', Array)
#6 /home/mysite/public_html/lib/Zend/Db/Adapter/Abstract.php(753): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#7 /home/mysite/public_html/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(375): Zend_Db_Adapter_Abstract->fetchRow(Object(Varien_Db_Select))
#8 /home/mysite/public_html/app/code/core/Mage/Core/Model/Abstract.php(225): Mage_Core_Model_Resource_Db_Abstract->load(Object(Mage_Catalog_Model_Category), Object(Mage_Catalog_Model_Category), NULL)
#9 /home/mysite/public_html/app/code/local/Mage/Catalog/Block/Product/Newcustom.php(80): Mage_Core_Model_Abstract->load(Object(Mage_Catalog_Model_Category))
#10 /home/mysite/public_html/app/code/local/Mage/Catalog/Block/Product/Newcustom.php(145): Mage_Catalog_Block_Product_Newcustom->_getProductCollection()
#11 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(862): Mage_Catalog_Block_Product_Newcustom->_beforeToHtml()
#12 /home/mysite/public_html/app/code/core/Mage/Core/Model/Email/Template/Filter.php(191): Mage_Core_Block_Abstract->toHtml()
#13 [internal function]: Mage_Core_Model_Email_Template_Filter->blockDirective(Array)
#14 /home/mysite/public_html/lib/Varien/Filter/Template.php(134): call_user_func(Array, Array)
#15 /home/mysite/public_html/app/code/core/Mage/Core/Model/Email/Template/Filter.php(502): Varien_Filter_Template->filter('<h3>New Watches...')
#16 /home/mysite/public_html/app/code/core/Mage/Cms/Block/Block.php(54): Mage_Core_Model_Email_Template_Filter->filter('<h3>New Watches...')
#17 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Cms_Block_Block->_toHtml()
#18 /home/mysite/public_html/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#19 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Text_List->_toHtml()
#20 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(582): Mage_Core_Block_Abstract->toHtml()
#21 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(526): Mage_Core_Block_Abstract->_getChildHtml('right', true)
#22 /home/mysite/public_html/app/design/frontend/default/twistedtime/template/page/2columns-right.phtml(56): Mage_Core_Block_Abstract->getChildHtml('right')
#23 /home/mysite/public_html/app/code/local/Mage/Core/Block/Template.php(469): include('/home/mysite/...')
#24 /home/mysite/public_html/app/code/local/Mage/Core/Block/Template.php(531): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#25 /home/mysite/public_html/app/code/local/Mage/Core/Block/Template.php(559): Mage_Core_Block_Template->renderView()
#26 /home/mysite/public_html/app/code/core/Mage/Core/Block/Abstract.php(863): Mage_Core_Block_Template->_toHtml()
#27 /home/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(529): Mage_Core_Block_Abstract->toHtml()
#28 /home/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(391): Mage_Core_Model_Layout->getOutput()
#29 /home/mysite/public_html/app/code/core/Mage/Catalog/Helper/Product/View.php(147): Mage_Core_Controller_Varien_Action->renderLayout()
#30 /home/mysite/public_html/app/code/core/Mage/Catalog/controllers/ProductController.php(132): Mage_Catalog_Helper_Product_View->prepareAndRender(27, Object(Mage_Catalog_ProductController), Object(Varien_Object))
#31 /home/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(420): Mage_Catalog_ProductController->viewAction()
#32 /home/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view')
#33 /home/mysite/public_html/app/code/community/ArtsOnIT/OfflineMaintenance/Controller/Router/Standard.php(46): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#34 /home/mysite/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(176): ArtsOnIT_OfflineMaintenance_Controller_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#35 /home/mysite/public_html/app/code/core/Mage/Core/Model/App.php(349): Mage_Core_Controller_Varien_Front->dispatch()
#36 /home/mysite/public_html/app/Mage.php(640): Mage_Core_Model_App->run(Array)
#37 /home/mysite/public_html/index.php(80): Mage::run('', 'store')
#38 {main}
Check filters in your _getProductCollection function. If you don't have any then check init methods of all custom models you have.

AVAudioPlayer keeps crashing at this line? (initializing)

My AVAudioPlayer keeps crashing at the error:nil line:
AVAudioRecorder *tempRecorder = [[AVAudioRecorder alloc]
initWithURL:nil
settings:nil
error:nil];
I tried setting it to a non-nil value, but still, it keeps crashing at that specific line!
Here's the stack trace:
#0 0x00e0ed65 in CFEqual ()
#1 0x00e69e86 in CFArrayGetFirstIndexOfValue ()
#2 0x0158cda8 in AudioFileFormatRegistry::GetTypesForExtension(__CFString const*, unsigned long*, void*) ()
#3 0x0158eb5c in AudioFileGetGlobalInfoSize ()
#4 0x00cc8e6a in -[AVAudioRecorder initWithURL:settings:error:] ()
#5 0x000033f7 in -[RecorderVC resetRecorder] at /Users/Ahmed/Documents/AudioRecorder/AudioRecorder/RecorderVC.m:52
#6 0x000031d3 in -[RecorderVC viewDidLoad] ()
#7 0x000c4089 in -[UIViewController view] ()
#8 0x000d6f54 in -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:] ()
#9 0x000d5aaa in -[UITabBarController transitionFromViewController:toViewController:] ()
#10 0x000d78a2 in -[UITabBarController _setSelectedViewController:] ()
#11 0x000d7d5e in -[UITabBarController viewWillLayoutSubviews] ()
#12 0x001e82e9 in -[UILayoutContainerView layoutSubviews] ()
#13 0x017e1a5a in -[CALayer layoutSublayers] ()
#14 0x017e3ddc in CALayerLayoutIfNeeded ()
#15 0x017890b4 in CA::Context::commit_transaction(CA::Transaction*) ()
#16 0x0178a294 in CA::Transaction::commit() ()
#17 0x000169c9 in -[UIApplication _reportAppLaunchFinished] ()
#18 0x00016e83 in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] ()
#19 0x00021617 in -[UIApplication handleEvent:withNewEvent:] ()
#20 0x00019abf in -[UIApplication sendEvent:] ()
#21 0x0001ef2e in _UIApplicationHandleEvent ()
#22 0x01130992 in PurpleEventCallback ()
#23 0x00ed8944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#24 0x00e38cf7 in __CFRunLoopDoSource1 ()
#25 0x00e35f83 in __CFRunLoopRun ()
#26 0x00e35840 in CFRunLoopRunSpecific ()
#27 0x00e35761 in CFRunLoopRunInMode ()
#28 0x000167d2 in -[UIApplication _run] ()
#29 0x00022c93 in UIApplicationMain ()
#30 0x00002a39 in main ()
You can't pass nil for initWithURL:. See:
http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVAudioRecorder_ClassReference/Reference/Reference.html

NSFetchedResultsController crashes on every save operation

Even when I commented out every single activity within the delegate methods, every time I call an "managedobjectcontext save:nil" operation, the app crashes with different erros namely the following: (seems like a release problem but not sure where. I get EXC_BAD_ACCESS)
#0 0x02813a93 in objc_msgSend
#1 0xbfffd5b0 in ??
#2 0x0236c1b2 in -[NSFetchedResultsController(PrivateMethods) _postprocessInsertedObjects:]
#3 0x023721bc in -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:]
#4 0x00024c1d in _nsnote_callback
#5 0x02690cf9 in __CFXNotificationPost_old
#6 0x0261011a in _CFXNotificationPostNotification
#7 0x0001a7c2 in -[NSNotificationCenter postNotificationName:object:userInfo:]
#8 0x022ae519 in -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:]
#9 0x0231db33 in -[NSManagedObjectContext(_NSInternalChangeProcessing) _createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:]
#10 0x02290f78 in -[NSManagedObjectContext(_NSInternalChangeProcessing) _processRecentChanges:]
#11 0x022caa15 in -[NSManagedObjectContext save:]
#12 0x00005147 in -[PostsViewController saveMOC:] at PostsViewController.m:254
#13 0x00039e9a in __NSThreadPerformPerform
#14 0x02699d7f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
#15 0x025f81dd in __CFRunLoopDoSources0
#16 0x025f77c6 in __CFRunLoopRun
#17 0x025f7280 in CFRunLoopRunSpecific
#18 0x025f71a1 in CFRunLoopRunInMode
#19 0x02f1d2c8 in GSEventRunModal
#20 0x02f1d38d in GSEventRun
#21 0x002c8b58 in UIApplicationMain
#22 0x000028c0 in main at main.m:14
You most likely have an attribute that changes the FRC when the context is saved. If you have a attribute used as sectionNameKeyPath, a change to the attribute upon save could trigger this problem.