Hi René, I was just looking at the bug report, but I don't think we'll be able to figure out something from the stack trace alone.
It sounds quite random, and from the stack trace it might be memory corruption. Without a test case it'll be close to impossible to figure out this one. Thanks, Rolf On Wed, Apr 25, 2012 at 1:21 PM, René Ruppert <[email protected]>wrote: > Hi, > > I have reported this issue as a bug already. Still, I'm curious if > there is a way for me to prevent the problem. > I'm rendering a PDF page into an image. Randomly this process crashes > with the stack trace below. The error occurs inside > MonoTouch.CoreGraphics.CGContext.CGContextDrawPDFPage(), so I don't > think there is a way for me to prevent it, but better ask. > I can see the crash in MT 5.2.10 and 5.2.11. I have seen it in the > Simulator only so far. And most interestingly: if it happens, it > happens after the app has just been started (for debugging). If I > restart immediately afterwards and retry, it works. Then I can render > hundreds of pages. > > The code: > > The page cannot be NULL, that is checked. The CGContext cannot be > NULL, because then SetFillColor() would fail. So I cannot see a > problem in the managed part and hope that somebody sees where in the > unmanaged part the problem is hidden. > > public static UIImageView GetLowResPagePreview (CGPDFPage oPdfPage, > RectangleF oTargetRect) > { > var oBackgroundImage = > GetLowResPagePreviewImage(oPdfPage, oTargetRect); > > UIImageView oBackgroundImageView = new UIImageView > (oBackgroundImage); > oBackgroundImageView.Frame = new RectangleF (new > PointF (0, 0), > oBackgroundImage.Size); > oBackgroundImageView.ContentMode = > UIViewContentMode.Center; > oBackgroundImageView.UserInteractionEnabled = false; > oBackgroundImageView.AutoresizingMask = > UIViewAutoresizing.None; > return oBackgroundImageView; > } > > /// <summary> > /// Gets the low res page preview of a PDF page. Does a > quick image > render of the page. > /// </summary> > /// <param name="iPage">the number of the page to > render</param> > /// <param name="oTergetRect">the target rect to fit the > PDF page into</param> > /// <returns> > /// The low res page image view. > /// </returns> > public static UIImage GetLowResPagePreviewImage (CGPDFPage > oPdfPage, > RectangleF oTargetRect) > { > if(oPdfPage == null) > { > return null; > } > > RectangleF oPdfPageRect = > PdfViewerHelpers.RotateRectangle( > oPdfPage.GetBoxRect (CGPDFBox.Media), oPdfPage.RotationAngle); > // If preview is requested for the PDF index view, > render a smaller version. > float fAspectScale = 1f; > if (!oTargetRect.IsEmpty) > { > // Resize the PDF page so that it fits the > target rectangle. Also > scale up if it is smaller than the available area. > fAspectScale = > GetAspectZoomFactor(oTargetRect.Size, > oPdfPageRect.Size, true); > oPdfPageRect = new > RectangleF(oPdfPageRect.Location, new > SizeF(oPdfPageRect.Size.Width * fAspectScale, oPdfPageRect.Size.Height > * fAspectScale)); > } > > int iWidth = Convert.ToInt32 ( > Math.Ceiling(oPdfPageRect.Size.Width )); > int iHeight = Convert.ToInt32 ( > Math.Ceiling(oPdfPageRect.Size.Height )); > UIImage oBackgroundImage= null; > using(CGColorSpace oColorSpace = > CGColorSpace.CreateDeviceRGB()) > { > using(CGBitmapContext oContext = new > CGBitmapContext(null, iWidth, > iHeight, 8, iWidth * 4, oColorSpace, > CGImageAlphaInfo.PremultipliedFirst)) > { > // First fill the background with > white. > oContext.SetFillColor (1.0f, 1.0f, > 1.0f, 1.0f); > oContext.FillRect (oPdfPageRect); > > // Apply scale. Cannot use > GetDrawingTransform() because it does > not scale up if the page is smaller than the available area. > oContext.ConcatCTM( > CGAffineTransform.MakeScale(fAspectScale, > fAspectScale)); > oContext.InterpolationQuality = > CGInterpolationQuality.Low; > > // !!! THIS IS THE LINE WHERE THE CRASH IS HAPPENING !!! > oContext.DrawPDFPage (oPdfPage); > > > using(CGImage oImage = > oContext.ToImage()) > { > oBackgroundImage = > UIImage.FromImage( oImage ); > } > } > } > > return oBackgroundImage; > } > > The Stack trace: > > at (wrapper managed-to-native) > MonoTouch.CoreGraphics.CGContext.CGContextDrawPDFPage (intptr,intptr) > <IL 0x00024, 0xffffffff> > at MonoTouch.CoreGraphics.CGContext.DrawPDFPage > (MonoTouch.CoreGraphics.CGPDFPage) [0x00000] in > > /Developer/MonoTouch/Source/monotouch/src/shared/CoreGraphics/CGContext.cs:979 > at > iBrainloop.Controllers.PdfViewer.PdfViewerHelpers.GetLowResPagePreviewImage > (MonoTouch.CoreGraphics.CGPDFPage,System.Drawing.RectangleF) [0x00108] > in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/iBrainloop/Controllers/PdfViewer/PdfViewerHelpers.cs:162 > at iBrainloop.Controllers.PdfViewer.PdfViewerHelpers.GetLowResPagePreview > (MonoTouch.CoreGraphics.CGPDFPage,System.Drawing.RectangleF) [0x00000] > in > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/iBrainloop/Controllers/PdfViewer/PdfViewerHelpers.cs:111 > at > iBrainloop.Controllers.PdfViewer.PdfSinglePageController.RenderHighQualityPdfPage > () [0x00060] in > > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/iBrainloop/Controllers/PdfViewer/PdfSinglePageController.cs:663 > at > iBrainloop.Controllers.PdfViewer.PdfSinglePageController.ViewWillAppear > (bool) [0x0003d] in > > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/iBrainloop/Controllers/PdfViewer/PdfSinglePageController.cs:173 > at (wrapper runtime-invoke) > <Module>.runtime_invoke_void__this___sbyte > (object,intptr,intptr,intptr) <IL 0x00054, 0xffffffff> > at (wrapper managed-to-native) > MonoTouch.ObjCRuntime.Messaging.void_objc_msgSendSuper_IntPtr_bool > (intptr,intptr,intptr,bool) <IL 0x0002e, 0xffffffff> > at MonoTouch.UIKit.UIViewController.PresentModalViewController > (MonoTouch.UIKit.UIViewController,bool) [0x00038] in > /Developer/MonoTouch/Source/monotouch/src/UIKit/UIViewController.g.cs:261 > at > BrainloopMobile.PreviewHelpers/<PreviewLocalDMO>c__AnonStorey21.<>m__52 > (BrainloopMobile.ProgressController/PROGRESS_STATUS) [0x00182] in > > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/BrainloopMobile/Helpers/PreviewHelpers.cs:289 > at BrainloopMobile.ProgressController/<DoWork>c__AnonStorey2A.<>m__67 > () [0x0002b] in > > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/BrainloopMobile/Controllers/Progress/ProgressController.cs:316 > at MonoTouch.Foundation.NSActionDispatcher.Apply () [0x00000] in > /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSAction.cs:48 > at (wrapper runtime-invoke) object.runtime_invoke_void__this__ > (object,intptr,intptr,intptr) <IL 0x0004e, 0xffffffff> > at (wrapper managed-to-native) > MonoTouch.UIKit.UIApplication.UIApplicationMain > (int,string[],intptr,intptr) <IL 0x0009f, 0xffffffff> > at MonoTouch.UIKit.UIApplication.Main (string[],string,string) > [0x00042] in > /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 > at BrainloopMobile.Application.Main (string[]) [0x00000] in > > /Users/rene/Documents/Develop/Projects/BrainloopMobile/210/BrainloopMobile/BrainloopMobile/Main.cs:15 > at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object > (object,intptr,intptr,intptr) <IL 0x00050, 0xffffffff> > > Native stacktrace: > > 0 BrainloopBrowser 0x00094fbc > mono_handle_native_sigsegv + 284 > 1 BrainloopBrowser 0x0000beb8 > mono_sigsegv_signal_handler + 248 > 2 libsystem_c.dylib 0x99d5c59b _sigtramp + 43 > 3 ??? 0xffffffff 0x0 + 4294967295 > 4 CoreFoundation 0x960eb468 > __CFAllocatorSystemAllocate + 24 > 5 CoreFoundation 0x960eb444 CFAllocatorAllocate + > 356 > 6 CoreFoundation 0x960eb1a1 > _CFRuntimeCreateInstance + 385 > 7 ImageIO 0x91dc051b _CGImageReadCreate + 83 > 8 ImageIO 0x91dc0444 > CGImageReadCreateWithProvider + 284 > 9 ImageIO 0x91dc0291 > CGImageSourceCreateWithDataProvider + 220 > 10 CoreGraphics 0x01474ff5 > CGImageCreateWithJPEGDataProvider3 + 87 > 11 CoreGraphics 0x01383ce9 create_image_for_image > + 229 > 12 CoreGraphics 0x01383bd4 CGPDFImageCreateImage + > 191 > 13 CoreGraphics 0x0147135d > CGPDFDrawingContextDrawImage + 34 > 14 CoreGraphics 0x01377755 op_Do + 115 > 15 CoreGraphics 0x0146acc9 > pdf_scanner_handle_xname + 116 > 16 CoreGraphics 0x0146b194 CGPDFScannerScan + 216 > 17 CoreGraphics 0x013a33c4 > CGPDFDrawingContextDrawPage + 506 > 18 CoreGraphics 0x0145e958 > pdf_page_draw_in_context + 98 > 19 CoreGraphics 0x01479c67 CGContextDrawPDFPage + > 47 > 20 ??? 0x1693efa4 0x0 + 378793892 > 21 ??? 0x1693ef18 0x0 + 378793752 > 22 ??? 0x1693dbbc 0x0 + 378788796 > 23 ??? 0x1693d2c4 0x0 + 378786500 > 24 ??? 0x1693bb24 0x0 + 378780452 > 25 ??? 0x1693b48c 0x0 + 378778764 > 26 ??? 0x1693b341 0x0 + 378778433 > 27 BrainloopBrowser 0x00010222 mono_jit_runtime_invoke > + 722 > 28 BrainloopBrowser 0x00171f6e mono_runtime_invoke + > 126 > 29 BrainloopBrowser 0x00220a62 monotouch_trampoline + > 3442 > 30 UIKit 0x0229a38f -[UIViewController > _setViewAppearState:isAnimating:] + 158 > 31 UIKit 0x0229a51f > __52-[UIViewController > _setViewAppearState:isAnimating:]_block_invoke_0 + 171 > 32 CoreFoundation 0x0114c4a5 __NSArrayEnumerate + 597 > 33 CoreFoundation 0x0114c026 -[NSArray > enumerateObjectsWithOptions:usingBlock:] + 102 > 34 CoreFoundation 0x0114bf35 -[NSArray > enumerateObjectsUsingBlock:] + 53 > 35 UIKit 0x0229a44d -[UIViewController > _setViewAppearState:isAnimating:] + 348 > 36 UIKit 0x0229a51f > __52-[UIViewController > _setViewAppearState:isAnimating:]_block_invoke_0 + 171 > 37 CoreFoundation 0x0114c4a5 __NSArrayEnumerate + 597 > 38 CoreFoundation 0x0114c026 -[NSArray > enumerateObjectsWithOptions:usingBlock:] + 102 > 39 CoreFoundation 0x0114bf35 -[NSArray > enumerateObjectsUsingBlock:] + 53 > 40 UIKit 0x0229a44d -[UIViewController > _setViewAppearState:isAnimating:] + 348 > 41 UIKit 0x0229a5eb -[UIViewController > __viewWillAppear:] + 62 > 42 UIKit 0x0229a893 -[UIViewController > beginAppearanceTransition:animated:] + 203 > 43 UIKit 0x024b89ba > -[UIWindowController > transition:fromViewController:toViewController:target:didEndSelector:] > + 5168 > 44 UIKit 0x0229f857 -[UIViewController > presentViewController:withTransition:completion:] + 3579 > 45 UIKit 0x0229f9bc -[UIViewController > presentViewController:animated:completion:] + 112 > 46 UIKit 0x0229f9fc -[UIViewController > presentModalViewController:animated:] + 56 > 47 ??? 0x134c3771 0x0 + 323762033 > 48 ??? 0x134c3678 0x0 + 323761784 > 49 ??? 0x1628aeaf 0x0 + 371764911 > 50 ??? 0x144ae99a 0x0 + 340453786 > 51 ??? 0x13fb6b28 0x0 + 335244072 > 52 ??? 0x09fdea50 0x0 + 167635536 > 53 BrainloopBrowser 0x00010222 mono_jit_runtime_invoke > + 722 > 54 BrainloopBrowser 0x00171f6e mono_runtime_invoke + > 126 > 55 BrainloopBrowser 0x00220a62 monotouch_trampoline + > 3442 > 56 CoreFoundation 0x011eae42 -[NSObject > performSelector:withObject:] + 66 > 57 Foundation 0x017649df > __NSThreadPerformPerform + 254 > 58 CoreFoundation 0x011bd94f > __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 > 59 CoreFoundation 0x01120b43 __CFRunLoopDoSources0 + > 243 > 60 CoreFoundation 0x01120424 __CFRunLoopRun + 1012 > 61 CoreFoundation 0x0111fd84 CFRunLoopRunSpecific + > 212 > 62 CoreFoundation 0x0111fc9b CFRunLoopRunInMode + 123 > 63 GraphicsServices 0x047d87d8 GSEventRunModal + 190 > 64 GraphicsServices 0x047d888a GSEventRun + 103 > 65 UIKit 0x021d1626 UIApplicationMain + 1163 > 66 ??? 0x0ede218d 0x0 + 249438605 > 67 ??? 0x0ede0930 0x0 + 249432368 > 68 ??? 0x0ede0608 0x0 + 249431560 > 69 ??? 0x0ede077e 0x0 + 249431934 > 70 BrainloopBrowser 0x00010222 mono_jit_runtime_invoke > + 722 > 71 BrainloopBrowser 0x00171f6e mono_runtime_invoke + > 126 > 72 BrainloopBrowser 0x00176294 mono_runtime_exec_main > + 420 > 73 BrainloopBrowser 0x00176605 mono_runtime_run_main + > 725 > 74 BrainloopBrowser 0x0006b7f5 mono_jit_exec + 149 > 75 BrainloopBrowser 0x0022bccc main + 3052 > 76 BrainloopBrowser 0x00003165 start + 53 > > René > _______________________________________________ > MonoTouch mailing list > [email protected] > http://lists.ximian.com/mailman/listinfo/monotouch >
_______________________________________________ MonoTouch mailing list [email protected] http://lists.ximian.com/mailman/listinfo/monotouch
