Skip to content

LATX, fix: Resolve Steam i386 libraries beside selected - #411

Open
baibaidashixiong wants to merge 1 commit into
lat-opensource:masterfrom
baibaidashixiong:steam/pr-i386-interpreter-library-main
Open

LATX, fix: Resolve Steam i386 libraries beside selected#411
baibaidashixiong wants to merge 1 commit into
lat-opensource:masterfrom
baibaidashixiong:steam/pr-i386-interpreter-library-main

Conversation

@baibaidashixiong

Copy link
Copy Markdown
Contributor

Summary / 变更说明

  • Title: linux-user, fix: Resolve Steam i386 libraries beside selected loader

Steam Runtime i386 steam and gldriverquery can request an absolute
lib*.so* that is absent from the configured runtime prefix even though the
selected PT_INTERP loader's directory contains the matching library. This
prevented steam from creating its GLX visual and blocked the client UI.

After the original read-only unprefixed open returns ENOENT, this PR retries
the same library basename beside the selected loader only for steam or
gldriverquery. It reuses the existing trusted loader-page check, retains the
original errno on an unsuccessful retry, and keeps the fallback i386-only. It
adds no launcher, LAT_SET_ENV, PRESSURE_VESSEL_PREFIX, or other environment
injection.

No dedicated automated test is added: a faithful fixture requires an i386
guest, a selected PT_INTERP loader, and a deliberately incomplete runtime
prefix. Steam Runtime gldriverquery directly exercises the affected path.
Independent review passed after the fallback was limited to the two observed
Steam executable basenames.

Validation / 验证

  • ninja -C build32 --quiet latx-i386: passed.
  • ninja -C build64 --quiet latx-x86_64: passed.
  • git diff --check: passed.
  • Commit-level scripts/checkpatch.pl: 0 errors, 0 warnings.
  • Steam Runtime regression:
    ubuntu12_32/steam-runtime/run.sh ubuntu12_32/gldriverquery passed the
    previous “Couldn't find matching GLX visual” failure and reached the
    separate radeonsi / X_GLXCreateContext failure.

Remaining Scope / 风险

  • Only the steam and gldriverquery basenames executing through a trusted
    i386 dynamic loader may invoke the fallback, and only for a read-only
    absolute lib*.so* open that missed the normal unprefixed path.
  • A library absent beside the selected loader returns the original ENOENT.
  • The fallback path is compiled out for x86_64; the shared loader identity
    helper remains available to its pre-existing x86_64 tunnel notification use.
  • No negative test currently covers other executable basenames, an untrusted
    loader page, retry errno restoration, or O_PATH; the independent review
    accepted this as a narrow, Steam-only limitation rather than widening the
    change or adding an environment-specific fixture.
  • This is a hack method specifically for Steam, not applicable to general scenarios.

Checklist / 检查项

  • I have read CONTRIBUTING.md. / 我已阅读 CONTRIBUTING.md
  • Every commit contains a DCO sign-off (git commit -s). /
    每个提交都包含 DCO 签署(git commit -s)。
  • I have included relevant build or test results, or explained why they
    are not applicable. / 我已提供相关构建或测试结果,或说明了不适用的原因。

Steam Runtime i386 steam and gldriverquery use the i386 dynamic loader to open absolute lib*.so names that can be absent from the configured runtime prefix even when the selected PT_INTERP loader has the matching library beside it. The lookup then prevents Steam from creating its GLX visual.

Signed-off-by: zqz <OrzZzznn@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant