[vlc-devel] Handling deadlock between display:Open() and vout_window_ReportSize()

Rémi Denis-Courmont remi at remlab.net
Sat Dec 14 08:47:03 CET 2019


Le perjantaina 13. joulukuuta 2019, 19.23.25 EET Alexandre Janniaux a écrit :
> On Fri, Dec 13, 2019 at 07:06:35PM +0200, Rémi Denis-Courmont wrote:
> > Le perjantaina 13. joulukuuta 2019, 18.54.22 EET Alexandre Janniaux a 
écrit :
> > > On Fri, Dec 13, 2019 at 06:08:38PM +0200, Rémi Denis-Courmont wrote:
> > > > 	Hi,
> > > > 
> > > > There's an obvious lock inversion in that patch that will break all
> > > > platforms.
> > > 
> > > For the inversion lock, the inversion is obvious in the
> > > current codebase, but is impossible if you enable with the
> > > right state because of the ordering of events and state, as
> > > far as I checked. It's not impossible that it's imperfect
> > > though, I would have submitted a patch if I were sure of
> > > what I was doing.
> > 
> > We use strict lock ordering in VLC like pretty much everywhere else.
> > Anything else will confuse developers, reviewers, sanitizers and
> > analyzers too much to bare.
> 
> I agree, that's why I'm posting, do you have any other idea?

Other idea implies that there are any ideas. This patchset, behind the 
apparent lock inversion, introduces a data race on sys->display. It's broken.

> To sum up the issue, we shouldn't try locking the display
> lock and resizing the display at all if it doesn't exist yet,

No. That's supposed to work, as are all other aout/vout user-driven changes. 

If your display plugin can't handle it, it's broken, not the core. And indeed, 
it seems like the usual plugin misdesign where it sends an event to itself.

-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/





More information about the vlc-devel mailing list