From: "Michel Dänzer" <michel-otUistvHUpPR7s880joybQ@public.gmane.org>
To: Mario Kleiner <mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
Cc: xorg-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH 9/9] dri2: Fix corner case crash for swaplimit > 1
Date: Thu, 16 Feb 2012 10:46:14 +0100 [thread overview]
Message-ID: <1329385574.2859.409.camel@thor.local> (raw)
In-Reply-To: <1329349524-11650-10-git-send-email-mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
On Don, 2012-02-16 at 00:45 +0100, Mario Kleiner wrote:
> If a swaplimit > 1 is set on a server which
> supports the swaplimit api (XOrg 1.12.0+),
> the following can happen:
>
> 1. Client calls glXSwapBuffersMscOML() with a
> swap target > 1 vblank in the future, or a
> client calls glXSwapbuffers() while the swap
> interval is set to > 1 (unusual but possible).
>
> 2. nouveau_dri2_finish_swap() is therefore called
> only at the target vblank, instead of immediately.
>
> 3. Because of the deferred execution of
> nouveu_dri2_finish_swap(), the OpenGL client
> can call x-servers DRI2GetBuffersWithFormat()
> before nouveau_dri2_finish_swap() executes and
> it deletes pixmaps that would be needed by
> nouveau_dri2_finish_swap() --> Segfault --> Crash.
Pixmaps are reference counted, so it should be possible to fix this via
proper reference counting.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau
next prev parent reply other threads:[~2012-02-16 9:46 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-15 23:45 [Patches][nouveau/ddx]: Improvements to bufferswap implementation and timestamping Mario Kleiner
[not found] ` <1329349524-11650-1-git-send-email-mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
2012-02-15 23:45 ` [PATCH 1/9] dri2: Fix can_exchange() to allow page-flipping on new servers Mario Kleiner
[not found] ` <1329349524-11650-2-git-send-email-mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
2012-02-16 10:04 ` Michel Dänzer
[not found] ` <1329386665.2859.414.camel-2h6evNeVVYGs1BDpvl8NfQ@public.gmane.org>
2012-02-20 4:59 ` Mario Kleiner
[not found] ` <4F41D31E.3030901-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
2012-02-20 10:27 ` Michel Dänzer
[not found] ` <1329733624.2859.536.camel-2h6evNeVVYGs1BDpvl8NfQ@public.gmane.org>
2012-02-22 1:23 ` Mario Kleiner
2012-02-15 23:45 ` [PATCH 2/9] dri2: Implement handling of pageflip completion events Mario Kleiner
2012-02-15 23:45 ` [PATCH 3/9] dri2: Add support for DRI2SwapLimit() API Mario Kleiner
2012-02-15 23:45 ` [PATCH 4/9] dri2: Update front buffer pixmap and name before exchanging buffers Mario Kleiner
2012-02-15 23:45 ` [PATCH 5/9] dri2: Fixes to swap scheduling Mario Kleiner
2012-02-15 23:45 ` [PATCH 6/9] dri2: Allow vblank controlled swaps for redirected windows. Part I Mario Kleiner
2012-02-15 23:45 ` [PATCH 7/9] dri2: Allow vblank controlled swaps for redirected windows. Part II Mario Kleiner
2012-02-15 23:45 ` [PATCH 8/9] dri2: Reimplement hack for triple-buffering on old X-Servers Mario Kleiner
2012-02-15 23:45 ` [PATCH 9/9] dri2: Fix corner case crash for swaplimit > 1 Mario Kleiner
[not found] ` <1329349524-11650-10-git-send-email-mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org>
2012-02-16 9:46 ` Michel Dänzer [this message]
[not found] ` <1329385574.2859.409.camel-2h6evNeVVYGs1BDpvl8NfQ@public.gmane.org>
2012-02-20 5:17 ` Mario Kleiner
2012-07-12 19:39 ` Anssi Hannula
[not found] ` <0d082daa8340ab694169e75ff2c3044c-NuFIJhXzKCMOpIWgD9kOMw@public.gmane.org>
2012-07-23 17:19 ` Anssi Hannula
2012-02-29 7:17 ` [Patches][nouveau/ddx]: Improvements to bufferswap implementation and timestamping Ben Skeggs
2012-03-01 18:34 ` Mario Kleiner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1329385574.2859.409.camel@thor.local \
--to=michel-otuistvhuppr7s880joybq@public.gmane.org \
--cc=bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=mario.kleiner-TdbV1Z3I5XE0NhjG498hmQ@public.gmane.org \
--cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=xorg-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.