| Summary: | Code dump in kernel oops reports is sometimes truncated | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Chuck Ebbert <cebbert> |
| Component: | kernel | Assignee: | Kay Sievers <kay> |
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 16 | CC: | gansalmon, itamar, jonathan, kernel-maint, madhu.chinakonda, tcallawa |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2012-03-28 00:57:43 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
|
Description
Chuck Ebbert
2011-09-08 18:56:41 UTC
That looks like something to fix in the dumping code:
arch/x86/kernel/dumpstack_64.c
printk("<%02x> ", c);
Printk lines are not allowed to start with the syslog prefix <number>.
It only worked in earlier versions because the kernel supported
single digits only, which probably nobody has enclosed in <>.
I guess the separating ' ' between the fields in the output loop needs to
be moved to prefix the line and not be appended, so that the printk parser
does not detect a level prefix.
Alternatively it might be sufficient to add KERN_INFO in front, so that
a valid prefix is always there and gets stripped by printk.
But this isn't at the start of a line. The start of the line is "<KERN_EMERG> Code: " The current (simple) implementation of printk() does not have a concept of a new line for the input, only for the output. The syslog prefix is checked with every invocation of printk(). It was like that before the above mentioned change already, it's just that nobody ever printed '<[0-9]>' and expected it to show up in the log. Now with the (proper) multi-digit support it seams to eat the <[0-9][0-9]> matches. The newline logic in printk is a global variable, so any other user finish the line in-between multiple printk()s. I guess the best option is to change the caller to print with a leading ' '? There is also the KERN_CONT prefix magic, which might just do the right thing here. I'll change it to use leading spaces, that looks easy enough to do. I've put a fix in rawhide for now. This looks like it's been fixed upstream: http://git.kernel.org/?p=linux/kernel/git/tip/tip.git;a=commitdiff;h=13f541c10b30fc6529200d7f9a0073217709622f Seems the KERN_CONT route is how they went. changed in git to use that version. also added to f15/f16. [mass update] kernel-3.3.0-4.fc16 has been pushed to the Fedora 16 stable repository. Please retest with this update. [mass update] kernel-3.3.0-4.fc16 has been pushed to the Fedora 16 stable repository. Please retest with this update. [mass update] kernel-3.3.0-4.fc16 has been pushed to the Fedora 16 stable repository. Please retest with this update. |