Closed Bug 578124 Opened 14 years ago Closed 14 years ago

TEST-UNEXPECTED-FAIL | file:///c:/talos-slave/mozilla-central-win7-opt-u-reftest-d2d/build/reftest/tests/layout/reftests/bugs/555388-1-ref.html | application timed out after 330 seconds with no output

Categories

(Core :: Graphics, defect)

x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: armenzg, Assigned: jrmuizel)

References

Details

Attachments

(1 file, 1 obsolete file)

After enabling reftests for Direct 2D we are hitting this failure in this test suite.

http://tinderbox.mozilla.org/showlog.cgi?log=Firefox/1278952160.1278953225.1644.gz
This seems to be dumping the wrong crash.
No, the browser looked hung to the harness (no output) so it injected that thread into the process to crash it and get a stack.
(In reply to comment #2)
> No, the browser looked hung to the harness (no output) so it injected that
> thread into the process to crash it and get a stack.

Yep, that makes sense.
CreateTexture2D doesn't support creating FORMAT_A8 textures with GDI_COMPATIBLE so we avoid doing so. The patch is a little bit bigger because of some reorganization.

Also add a check for the return value of the QueryInterface in get_dc()
Attachment #457116 - Flags: review?(bas.schouten)
(In reply to comment #1)
> This seems to be dumping the wrong crash.

If you have suggestions for how to make that clearer in the output, I'm all ears!
(In reply to comment #5)
> (In reply to comment #1)
> > This seems to be dumping the wrong crash.
> 
> If you have suggestions for how to make that clearer in the output, I'm all
> ears!

How about giving the CrashingThread() symbol a better name like CrashTimedOutProcess()?
Comment on attachment 457116 [details] [diff] [review]
Don't create an A8 surface with GDI compatible flags

The rationale for not testing the QueryInterface can be found in http://msdn.microsoft.com/en-us/library/dd371321%28VS.85%29.aspx

'Note that the QueryInterface method always succeeds; if the render target doesn't support the ID2D1GdiInteropRenderTarget interface, calling GetDC will fail. (For render targets created through the CreateCompatibleRenderTarget method, the render target that created it must have these settings.)'

Additionally this should also be done for cairo_d2d_surface_create.

>@@ -2497,29 +2505,31 @@ cairo_d2d_get_dc(cairo_surface_t *surfac
>     if (!d2dsurf->isDrawing) {
>       /* GetDC must be called between BeginDraw/EndDraw */
>       d2dsurf->rt->BeginDraw();
>       d2dsurf->isDrawing = true;
>     }
> 
>     RefPtr<ID2D1GdiInteropRenderTarget> interopRT;
> 
>-    d2dsurf->rt->QueryInterface(&interopRT);
>-
>-    HDC retval;
>-    HRESULT rv;
>-
>-    rv = interopRT->GetDC(retain_contents ? D2D1_DC_INITIALIZE_MODE_COPY :
>-	D2D1_DC_INITIALIZE_MODE_CLEAR, &retval);
>+    HRESULT rv = d2dsurf->rt->QueryInterface(&interopRT);
> 
>     if (FAILED(rv)) {
> 	return NULL;
>     }
> 
>-    return retval;
>+    HDC dc;
>+    rv = interopRT->GetDC(retain_contents ? D2D1_DC_INITIALIZE_MODE_COPY :
>+	D2D1_DC_INITIALIZE_MODE_CLEAR, &dc);
>+
>+    if (FAILED(rv)) {
>+	return NULL;
>+    }
>+
>+    return dc;
> }
> 
> void
> cairo_d2d_release_dc(cairo_surface_t *surface, const cairo_rectangle_int_t *updated_rect)
> {
>     if (surface->type != CAIRO_SURFACE_TYPE_D2D) {
>         return;
>     }
Attachment #457116 - Flags: review?(bas.schouten) → review-
Attachment #457116 - Attachment is obsolete: true
Attachment #458712 - Flags: review?(bas.schouten)
Attachment #458712 - Flags: review?(bas.schouten) → review+
http://hg.mozilla.org/mozilla-central/rev/16e80bf00c1b
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Assignee: nobody → jmuizelaar
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: