[Mono-bugs] [Bug 569770] New: Mono.Cairo ImageSurface causes access violations on Windows

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Jan 11 15:50:31 EST 2010



           Summary: Mono.Cairo ImageSurface causes access violations on
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.4.x
          Platform: All
        OS/Version: Windows
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Mono.Cairo
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: ajselvig at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
AppleWebKit/532.8 (KHTML, like Gecko) Chrome/ Safari/532.8

When an ImageSurface using an array to store the image data is created in
Windows,  the GC eventually moves the array, resulting in an access violation.
Same code works fine on Linux.

Reproducible: Always

Steps to Reproduce:
1. Create an image surface with something like:
    imageData = new byte[w* h* 4];
    surface = new ImageSurface( ref imageData, Format.ARGB32, w, h, 4 * w);
2. Perform some rendering operations on a context created like:
    using (Context cr = new Context(surface))
        // do something with cr
Actual Results:  
The rendering will work fine for a couple seconds, but then throw an access
violation on some call to the context.

Expected Results:  
Continued to render without throwing the exception.

This bug can be fixed by pinning the image data with something like:

gch = GCHandle.Alloc(imageData, GCHandleType.Pinned);

before it is sent to the ImageSurface. While this is an okay workaround, it
should be done inside of Mono.Cairo.

Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list