trace.c extension module needs to be updated
by Dave Anderson
Hi Daisuke,
The trace.c extension module is no longer functional as of Linux 4.2
due to a huge rework of the ftrace code which, most notably, changed
symbol and structure names from "ftrace..." to "trace...".
Can you take a look at addressing those changes, while maintaining
backwards compatibility?
Thanks,
Dave
9 years, 3 months
[PATCH] arm64: incorrect translation, physical address include flags
by Erlandsson, Johan
Hi
We have seen a problem when translating virtual to physical
addresses. It appears that upper flags are not cleared.
Example below, observe that physical address is incorrect for 'PAGE:',
it include flags in upper bits. This value is also returned from
arm64_vtop_3level_4k().
crash> vtop ffffffc081000000
VIRTUAL PHYSICAL
ffffffc081000000 81000000
PAGE DIRECTORY: ffffffc00007d000
PGD: ffffffc00007d810 => 61fe003
PMD: ffffffc0061fe040 => 20000081000711
PAGE: 20000081000000 (2MB)
PTE PHYSICAL FLAGS
20000081000711 81000000 (VALID|SHARED|AF|PXN)
vtop: WARNING: sparsemem: invalid section number: 8388610
---
arm64.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arm64.c b/arm64.c
index d1d75c4..2320df9 100644
--- a/arm64.c
+++ b/arm64.c
@@ -802,6 +802,7 @@ arm64_vtop_3level_4k(ulong pgd, ulong vaddr, physaddr_t *paddr, int verbose)
if ((pmd_val & PMD_TYPE_MASK) == PMD_TYPE_SECT) {
ulong sectionbase = pmd_val & SECTION_PAGE_MASK_2MB;
+ sectionbase &= PHYS_MASK;
if (verbose) {
fprintf(fp, " PAGE: %lx (2MB)\n\n", sectionbase);
arm64_translate_pte(pmd_val, 0, 0);
--
1.9.1
9 years, 3 months
crash version 7.1.3 is available
by Dave Anderson
Download from: http://people.redhat.com/anderson
or
https://github.com/crash-utility/crash/releases
The master branch serves as a development branch that will contain all
patches that are queued for the next release:
$ git clone git://github.com/crash-utility/crash.git
Changelog:
- Fix for the "crash --osrelease" option for flattened format dumpfiles
in the unlikely event that the dumpfile header does not contain the
VMCOREINFO note section from the original ELF /proc/vmcore. Without
the patch, the command displays nothing instead of showing "unknown".
(anderson(a)redhat.com)
- Fix for the "kmem -s <address>", "bt -F[F]", and "rd -S[S]"
options in kernels configured with CONFIG_SLUB. Without the patch,
if a referenced slab object address comes from a slab cache that
utilizes a multiple-page slab, and the object is located within
a tail page of that slab cache, it will not be recognized as a slab
object. The "bt -F[F]" and "rd -S[S]" options will just show the
object address, and the "kmem -s <address>" object will indicate
"kmem: address is not allocated in slab subsystem: <address>".
This bug is a regression that was introduced in crash-7.1.0 by commit
8b2cb365d7fb139e77cedd80d4061332099ed382, which addressed a bug where
stale slab object addresses were incorrectly being recognized as
valid slab objects.
(anderson(a)redhat.com)
- Fix for a segmentation violation generated by the ARM64 "bt -[f|F]"
options when analyzing the active tasks in vmcores generated by the
kdump facility. This bug is a regression that was introduced in
crash-7.1.2 by commit 15a58e4070486efa2aa965bdd636626e62b65cc7, which
was an enhancement of the ARM64 backtrace capability for active tasks
in kdump vmcores.
(anderson(a)redhat.com)
- Fix for the extensions/trace.c extension module to account for
kernels that are not configured with CONFIG_TRACE_MAX_TRACER.
Without the patch, the module fails to load with the error message
"failed to init the offset, struct: trace_array, member: max_offset".
(rabinv(a)axis.com)
- If a kdump dumpfile is marked as incomplete in its ELF or compressed
kdump header, and the user has not used the --zero_excluded command
line option, append a note to the incomplete dump WARNING message
shown during invocation that suggests the use of --zero_excluded.
(zhouwj-fnst(a)cn.fujitsu.com)
- Fix for the RSS value displayed by the "ps" command in Linux 2.6.34
and later big-endian machines. Without the patch, a task's RSS value
will be erroneously calculated by using twice its file pages instead
of adding its file pages with its anonymous pages.
(anderson(a)redhat.com)
- Do not search for a panic task in s390x dumpfiles that are marked as
a "live dump" by the "zgetdump" facility. Without the patch, an
exhaustive, unnecessary, search of all kernel stacks that looks for
evidence of a system crash may find an invalid reference in a task's
kernel stack due to the common zero-based user and kernel virtual
address space ranges of the s390x, causing the task to be mistakenly
set as the "PANIC" task.
(holzheu(a)linux.vnet.ibm.com, anderson(a)redhat.com)
- Mark the "crash" task that generated a snapshot vmcore utilizing the
the "snap.so" extension module as "(ACTIVE)" in the STATE field of
the initial system banner and the "set" command. Without the patch,
the task's STATE field shows it as the "(PANIC)" task.
(anderson(a)redhat.com)
- Second part of:
Do not search for a panic task in s390x dumpfiles that are marked
as a "live dump" by the "zgetdump" facility...
The first part prevented a search of the active tasks; this part
prevents the last-ditch search of all tasks.
(anderson(a)redhat.com)
- When searching all kernel stacks for evidence of a panic task in
"live" s390x dumpfiles created by the VMDUMP, stand-alone dump, or
"virsh dump" facilities, none of which explicitly mark the dumpfile
as a "live dump", run a standard "bt" backtrace on each kernel stack
instead of the text-address-only "bt -t". Without the patch, an
invalid text reference may be found in a task's kernel stack due to
the common zero-based user and kernel virtual address space ranges of
the s390x, causing the task to be mistakenly set as the "PANIC" task.
(holzheu(a)linux.vnet.ibm.com)
- Introduction of the "dis -f <address>" option, which disassembles
from the target address until the end of the function.
(atomlin(a)redhat.com)
- Fix for the ARM64 "dis" command to prevent branch target addresses
from being displayed as kernel system call alias/wrapper names, for
example, "SyS_read+<offset>" instead of "sys_read+<offset>".
(anderson(a)redhat.com)
- Fix for the PPC64 "dis" command to prevent conditional branch
target addresses from being displayed as kernel system call
alias/wrapper names, for example, "SyS_read+<offset>" instead
of "sys_read+<offset>".
(anderson(a)redhat.com)
- Fix for the S390X "dis" command to prevent jump target addresses
from being displayed as kernel system call alias/wrapper names, for
example, "SyS_read+<offset>" instead of "sys_read+<offset>".
(anderson(a)redhat.com)
- Fix for the "dis" command on architectures with variable-length
instructions. Without the patch, "dis [-f] <function>" may continue
beyond the end of a function, disassembling the memory that is in
between the target function and the next function. For kernel module
functions, the module's debuginfo data must be loaded.
(anderson(a)redhat.com)
- Minor cleanup and error handling fix-up for the "dis" command.
Without the patch, if the target address of "dis -r" or "dis -f"
is not an exact address of an instruction, "dis -r" will continue
beyond the target address, and "dis -f" will show nothing.
(anderson(a)redhat.com)
- Reduce the unnecessary error messages if a directory is used as a
command line argument. Without the patch, six error messages are
displayed:
crash: unable to read dump file /tmp
/tmp: ELF header read: Is a directory
/tmp: ELF header read: Is a directory
crash: /tmp: read: Is a directory
read_maps: unable to read header from /tmp, errno = 1
crash: vmw: Failed to read '/tmp': [Error 21] Is a directory
With the patch applied, the functions that generate those messages
are not called; only the standard "not a supported file format",
and "Usage" messages will be displayed.
(anderson(a)redhat.com)
- If the method of determining how compound pages are linked cannot be
accomplished due to page struct related changes in upstream kernels,
issue a WARNING message during session initialization.
(anderson(a)redhat.com)
- Fix for the "timer" command on Linux 4.2 and later kernels, which
contain this kernel commit that modifies the tvec_root and tvec
data structures:
commit bc7a34b8b9ebfb0f4b8a35a72a0b134fd6c5ef50
timer: Use hlist for the timer wheel hash buckets
Without the patch, the "timer" command will spew messages indicating
"timer: invalid list entry: 0", followed by "timer: ignoring faulty
timer list at index <number> of timer array".
(anderson(a)redhat.com)
- Introduction of the "dis -s <address>" option, which displays the
filename and line number that is associated with the specified text
location, followed by a source code listing if it is available on the
host machine. The line associated with the text location will be
marked with an asterisk; depending upon gdb's internal "listsize"
variable, several lines will precede the marked location. If a
"count" argument is entered, it specifies the number of source code
lines to be displayed after the marked location; otherwise the
remaining source code of the containing function will be displayed.
(anderson(a)redhat.com)
- Added a new "--src <directory>" command line option for use by the
"dis -s" option if the kernel source code is not located in the
standard location that is compiled into the kernel's debuginfo data.
The directory argument should point to the top-level directory of the
kernel source tree.
(anderson(a)redhat.com)
9 years, 3 months