Bug 436183
Summary: | utrace: orig_rax 0x00000000ffffffff not recognized as -1 | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Jan Kratochvil <jan.kratochvil> | ||||
Component: | kernel | Assignee: | Roland McGrath <roland> | ||||
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | low | Docs Contact: | |||||
Priority: | low | ||||||
Version: | rawhide | CC: | kernel-mgr | ||||
Target Milestone: | --- | Keywords: | Regression | ||||
Target Release: | --- | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2008-03-08 20:23:00 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | 434995 | ||||||
Bug Blocks: | 437881, 437882 | ||||||
Attachments: |
|
Description
Jan Kratochvil
2008-03-05 20:00:57 UTC
Created attachment 296924 [details]
GDB workaround created by an ashaming mistake.
Comment on attachment 296924 [details]
GDB workaround created by an ashaming mistake.
Fixing GDB is not a solution as the ptrace-on-utrace emulation should be
backward compatible.
This is issue is not related to utrace. It's just x86-64 arch stuff. In what sense is F8 ok? AFAICT no x86-64 kernel ever recognized (u32)-1 in orig_rax as -1. The botched attempt at syscall restart (i.e. ip -= 2) didn't happen before because restoring a 32-bit -ERESTART* value was also not recognized as its proper value (due to lack of sign extension), i.e. bug 434995. I believe every kernel heretofore has this same problem, and it is only a kernel with bug 434995 fixed (as rawhide now has) on which you can tell the difference. I posted a fix upstream: http://marc.info/?l=linux-kernel&m=120493063622563&w=2 I will put it into rawhide too. Thanks, it looks great; will rerun it on the Rawhide update when available. You are right x86_64 kernel did not work exactly right but the behavior before the Bug 434995 fix behaved IMO more harmless. Specifically it only printed (and sure aborted the syscall) one Unknown error 512 on FAIL: gdb.base/interrupt.exp: continue while currently it hangs much earlier on: FAIL: gdb.base/interrupt.exp: call function when asleep (stays asleep) before the fix: gdb-6.7.1-15.fc9-kernel-vanilla-2.6.24.1-31.vanilla.fc8.x86_64-target-x86_64/gdb-x86_64-redhat-linux-gnu-m32.sum: Running ../../../gdb/testsuite/gdb.base/interrupt.exp ... PASS: gdb.base/interrupt.exp: set interrupt character in interrupt.exp PASS: gdb.base/interrupt.exp: child process is alive PASS: gdb.base/interrupt.exp: child process ate our char PASS: gdb.base/interrupt.exp: send_gdb control C PASS: gdb.base/interrupt.exp: call function when asleep PASS: gdb.base/interrupt.exp: call function a second time FAIL: gdb.base/interrupt.exp: continue (timeout) FAIL: gdb.base/interrupt.exp: echo data (timeout) PASS: gdb.base/interrupt.exp: send end of file after the fix: gdb-6.7.1-15.fc9-kernel-2.6.25-0.88.rc3.git4.fc9.x86_64-target-x86_64/gdb-x86_64-redhat-linux-gnu-m32.sum: Running ../../../gdb/testsuite/gdb.base/interrupt.exp ... PASS: gdb.base/interrupt.exp: set interrupt character in interrupt.exp PASS: gdb.base/interrupt.exp: child process is alive PASS: gdb.base/interrupt.exp: child process ate our char PASS: gdb.base/interrupt.exp: send_gdb control C FAIL: gdb.base/interrupt.exp: call function when asleep (stays asleep) FAIL: gdb.base/interrupt.exp: call function after waking it PASS: gdb.base/interrupt.exp: call function a second time PASS: gdb.base/interrupt.exp: continue PASS: gdb.base/interrupt.exp: echo data FAIL: gdb.base/interrupt.exp: send end of file Fixed in 2.5.25-rc4-git3 Verified as fixed on: kernel-2.6.25-0.101.rc4.git3.fc9.x86_64 (Rawhide) |