kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #37923
Re: GAL canvas deadlock
I added a call to glCheckFramebufferStatusEXT(), and it returns GL_FRAMEBUFFER_COMPLETE_EXT. So it sounds like GL_INVALID_FRAMEBUFFER_OPERATION is returned under other conditions as well, but what those are I haven’t the foggiest.
> On 12 Oct 2018, at 22:29, Jeff Young <jeff@xxxxxxxxx> wrote:
>
> So we no longer get a deadlock. But the application still crashes when it tries to display the error using DisplayError().
>
> The error is GL_INVALID_FRAMEBUFFER_OPERATION. Wiki states this is: “Given when doing anything that would attempt to read from or write/render to a framebuffer that is not complete.” They have a whole section on what “not complete” means, but it’s all Greek to me.
>
> What sort of things might we do when updating the GAL display settings on two GAL canvasses that would leave an incomplete framebuffer? Any ideas on what else to check?
>
> Thanks,
> Jeff.
>
>> On 12 Oct 2018, at 22:21, Seth Hillbrand <seth@xxxxxxxxxxxxx <mailto:seth@xxxxxxxxxxxxx>> wrote:
>>
>> Hi Jeff-
>>
>> Am Fr., 12. Okt. 2018 um 13:46 Uhr schrieb Jeff Young <jeff@xxxxxxxxx <mailto:jeff@xxxxxxxxx>>:
>> That doesn’t work because the lock/unlock calls are in separate routines (BeginDrawing() and EndDrawing()).
>>
>> Sorry, I was unclear. There are catches for OpenGL failures that do not unlock the context if the error thrown is not std::runtime_error. I believe that the locking conflict is triggered here where an error is thrown all the way up to GAL, bypassing the unlock and leading to deadlock. Adding a default catch that unlocks the context before re-throwing would fix that
>>
>> That’s fundamentally unsafe, so I’m adding lockContext() and unlockContext() protected methods to the GAL API and a GAL_CONTEXT_LOCKER friend class that can be created on the stack. BeginDrawing() will ASSERT that the context has indeed been locked.
>>
>> RAII locking is definitely the safest way to go. Lose the stack->lose the lock.
>>
>> -S
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
Follow ups
References
-
GAL canvas deadlock
From: Jeff Young, 2018-10-10
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-10
-
Re: GAL canvas deadlock
From: Andrew Lutsenko, 2018-10-10
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-10
-
Re: GAL canvas deadlock
From: Andrew Lutsenko, 2018-10-11
-
Re: GAL canvas deadlock
From: Andrew Lutsenko, 2018-10-11
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-11
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-11
-
Re: GAL canvas deadlock
From: Tomasz Wlostowski, 2018-10-11
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-11
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-11
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-11
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-11
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-12
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-12
-
Re: GAL canvas deadlock
From: Seth Hillbrand, 2018-10-12
-
Re: GAL canvas deadlock
From: Jeff Young, 2018-10-12