This repository has been archived by the owner on Nov 1, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 341
bugfix: add null check on output gbm on pageflip #34
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The gbm for the output might be null for the pageflip in the case that the output has been disconnected. The gbm might be set to null by wlr_drm_output_cleanup() in this case. If the output is cleaned up before the pageflip, then a double free will crash the compositor on the call to gbm_surface_release_buffer() in the pageflip handler. The outputs buffer object bo[1] will point to invalid memory.
#9 told me to check drm hotplugging, so I did and noticed that it crashed most of the time so I decided to investigate. I don't know exactly what's going on with the code because I'm not familiar with wayland or gbm, but this seems to fix the issue. I tried a guard on the pageflip handler to return early when the state is I did indeed observe the case where the Here is a log (with valgrind output):
|
Thanks! |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The gbm for the output might be null for the pageflip in the case that
the output has been disconnected. The gbm might be set to null by
wlr_drm_output_cleanup() in this case.
If the output is cleaned up before the pageflip, then a double free
will crash the compositor on the call to gbm_surface_release_buffer()
in the pageflip handler. The outputs buffer object bo[1] will point to
invalid memory.