Summary: | REGRESSION: Buffer overrun on launch in SmartScheduleClient | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Jeremy Huddleston Sequoia <jeremyhu> | ||||||||
Component: | Server/General | Assignee: | Xorg Project Team <xorg-team> | ||||||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||
Severity: | normal | ||||||||||
Priority: | medium | ||||||||||
Version: | unspecified | ||||||||||
Hardware: | Other | ||||||||||
OS: | All | ||||||||||
Whiteboard: | |||||||||||
i915 platform: | i915 features: | ||||||||||
Attachments: |
|
Description
Jeremy Huddleston Sequoia
2016-09-11 07:31:22 UTC
Created attachment 126457 [details]
Crash log
Created attachment 126458 [details]
different ASan crash log from d6eff3c31e8289881a3aa9b858e5710d0f741db0
$ git bisect log git bisect start # good: [7762a602c1dfdd8cfcf2b8c2281cf4d683d05216] dix/os: Merge priority computation into SmartScheduleClient git bisect good 7762a602c1dfdd8cfcf2b8c2281cf4d683d05216 # bad: [527c6baa294d17c5eca1d87ac941844872e90dac] xkb: fix check for appending '|' character when applying rules git bisect bad 527c6baa294d17c5eca1d87ac941844872e90dac # bad: [28adb0d36982a0051ce6a9d1375aac0354ef2af4] xquartz: Update for removal of AddEnabledDevice and RemoveEnabledDevice git bisect bad 28adb0d36982a0051ce6a9d1375aac0354ef2af4 # bad: [dff0c1471ff8532a9d6d85e640a0c4fe35db7c00] xquartz: Update for removal of AddEnabledDevice and RemoveEnabledDevice git bisect bad dff0c1471ff8532a9d6d85e640a0c4fe35db7c00 # good: [4eccad7655518651f60eda35db4e5d5da84f6c19] xquartz: Update for removal of AddEnabledDevice and RemoveEnabledDevice git bisect good 4eccad7655518651f60eda35db4e5d5da84f6c19 # good: [711c36558f50943c8342f25ad210281134887a3d] os: Add poll emulation for mingw [v2] git bisect good 711c36558f50943c8342f25ad210281134887a3d # bad: [30bc0732f959bbc63f318c06d48de080d495da32] os: Use ospoll for input thread [v2] git bisect bad 30bc0732f959bbc63f318c06d48de080d495da32 # skip: [d6eff3c31e8289881a3aa9b858e5710d0f741db0] os: Add ospoll interface [v2] git bisect skip d6eff3c31e8289881a3aa9b858e5710d0f741db0 # skip: [8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e] dix: Use list for ready clients git bisect skip 8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e # good: [d403aca70a07e1401cb93738f1af5961582a2e47] Switch poll() users to xserver_poll() git bisect good d403aca70a07e1401cb93738f1af5961582a2e47 # bad: [f993091e7db81b0420e23c485378cba112278839] os: Switch server to poll(2) [v3] git bisect bad f993091e7db81b0420e23c485378cba112278839 # only skipped commits left to test # possible first bad commit: [f993091e7db81b0420e23c485378cba112278839] os: Switch server to poll(2) [v3] # possible first bad commit: [8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e] dix: Use list for ready clients # possible first bad commit: [d6eff3c31e8289881a3aa9b858e5710d0f741db0] os: Add ospoll interface [v2] os: Switch server to poll(2) [v3] # Original log's signature dix: Use list for ready clients # Second log's signature os: Add ospoll interface [v2] # Second log's signature So the issue(s) were introduced by the ospoll changes. Created attachment 126459 [details]
Crash log / ASan report for 8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e
'os: Add ospoll interface [v2]' was ok. I suspect the issue landed in 8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e, and then the signature changed likely due to refactoring in f993091e7db81b0420e23c485378cba112278839. The report with the InitClient signature looks to be because of bad dependency tracking in dix/Makefile.am because something wasn't getting rebuilt that needed to. It went away with a clean. I'll look into that separately. The report with the RandR signature is because of a race condition initializing the screen with client connection. We're now loosing the race due to these changes. There is a patch for that out on xorg-devel. With the RandR race addressed, I'm able to reliably hit the original signature on: commit 8f1edf4bd3a1f050ce9eeb5eac45dd1a8f7a6d5e Author: Keith Packard <keithp@keithp.com> Date: Thu May 19 13:59:54 2016 -0700 dix: Use list for ready clients This converts the dispatch loop into using a list of ready clients instead of an array. This changes the WaitForSomething API so that it notifies DIX when a client becomes ready to read, instead of returning the set of ready clients. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com> That looks to be the commit that introduced the regression. Patch proposal sent to xorg-devel Merged d81f9ce12aa4ac54b9c2b8c74c2f827c1f3e739a |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.