The "crash" utility doesn't run in ARM64 based devices

Bug #1354349 reported by Ming Lei
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
crash (Ubuntu)
Fix Released
High
Unassigned
Trusty
Fix Released
High
Craig Magina
Utopic
Fix Released
High
Unassigned

Bug Description

[Impact]
Crash is useless on trusty/arm64

[Test Case]
BAD (today):
dannf@mustang:~$ sudo crash /usr/lib/debug/boot/vmlinux-3.13.0-37-generic

crash 7.0.3
Copyright (C) 2002-2013 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter "help copying" to see the conditions.
This program has absolutely no warranty. Enter "help warranty" for details.

WARNING: arm64_verify_symbol: function not implemented
WARNING: arm64_verify_symbol: function not implemented
       [repeats, ad nauseum]
WARNING: arm64_verify_symbol: function not implemented
WARNING: arm64_verify_symbol: function not implemented
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-unknown-linux-gnu"...

crash: read error: kernel virtual address: ffffffc000612ce0 type: "cpu_possible_mask"
dannf@mustang:~$

GOOD:
dannf@mustang:~$ sudo crash /usr/lib/debug/boot/vmlinux-3.13.0-37-generic

crash 7.0.3
Copyright (C) 2002-2013 Red Hat, Inc.
Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation
Copyright (C) 1999-2006 Hewlett-Packard Co
Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited
Copyright (C) 2006, 2007 VA Linux Systems Japan K.K.
Copyright (C) 2005, 2011 NEC Corporation
Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. Enter "help copying" to see the conditions.
This program has absolutely no warranty. Enter "help warranty" for details.

GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-unknown-linux-gnu"...

      KERNEL: /usr/lib/debug/boot/vmlinux-3.13.0-37-generic
    DUMPFILE: /dev/mem
        CPUS: 8
        DATE: Tue Sep 30 15:24:37 2014
      UPTIME: 2 days, 05:04:47
LOAD AVERAGE: 0.20, 0.59, 0.62
       TASKS: 150
    NODENAME: mustang
     RELEASE: 3.13.0-37-generic
     VERSION: #64-Ubuntu SMP Mon Sep 22 21:32:32 UTC 2014
     MACHINE: aarch64 (unknown Mhz)
      MEMORY: 16 GB
         PID: 19911
     COMMAND: "crash"
        TASK: ffffffc21d18c200 [THREAD_INFO: ffffffc3e6978000]
         CPU: 3
       STATE: TASK_RUNNING (ACTIVE)

crash> dis sys_read
0xffffffc0001a6bc0 <SyS_read>: stp x29, x30, [sp,#-80]!
0xffffffc0001a6bc4 <sys_read+4>: mov x29, sp
0xffffffc0001a6bc8 <sys_read+8>: stp x19, x20, [sp,#16]
0xffffffc0001a6bcc <sys_read+12>: mov x20, x1
0xffffffc0001a6bd0 <sys_read+16>: add x1, x29, #0x48
0xffffffc0001a6bd4 <sys_read+20>: str x21, [sp,#32]
0xffffffc0001a6bd8 <sys_read+24>: str x2, [x29,#56]
0xffffffc0001a6bdc <sys_read+28>: bl 0xffffffc0001c1d4c <fget_light>
0xffffffc0001a6be0 <sys_read+32>: mov x19, x0
0xffffffc0001a6be4 <sys_read+36>: ldr w21, [x29,#72]
0xffffffc0001a6be8 <sys_read+40>: ldr x2, [x29,#56]
0xffffffc0001a6bec <sys_read+44>: cbz x0, 0xffffffc0001a6c48 <sys_read+136>
0xffffffc0001a6bf0 <sys_read+48>: ldr x4, [x0,#72]
0xffffffc0001a6bf4 <sys_read+52>: mov x1, x20
0xffffffc0001a6bf8 <sys_read+56>: add x3, x29, #0x48
0xffffffc0001a6bfc <sys_read+60>: str x4, [x29,#72]
0xffffffc0001a6c00 <sys_read+64>: bl 0xffffffc0001a6080 <vfs_read>
0xffffffc0001a6c04 <sys_read+68>: mov x20, x0
0xffffffc0001a6c08 <sys_read+72>: tbnz x20, #63, 0xffffffc0001a6c14 <sys_read+84>
0xffffffc0001a6c0c <sys_read+76>: ldr x0, [x29,#72]
0xffffffc0001a6c10 <sys_read+80>: str x0, [x19,#72]
0xffffffc0001a6c14 <sys_read+84>: cbnz w21, 0xffffffc0001a6c2c <sys_read+108>
0xffffffc0001a6c18 <sys_read+88>: mov x0, x20
0xffffffc0001a6c1c <sys_read+92>: ldr x21, [sp,#32]
0xffffffc0001a6c20 <sys_read+96>: ldp x19, x20, [sp,#16]
0xffffffc0001a6c24 <sys_read+100>: ldp x29, x30, [sp],#80
0xffffffc0001a6c28 <sys_read+104>: ret
0xffffffc0001a6c2c <sys_read+108>: mov x0, x19
0xffffffc0001a6c30 <sys_read+112>: bl 0xffffffc0001a7d54 <fput>
0xffffffc0001a6c34 <sys_read+116>: mov x0, x20
0xffffffc0001a6c38 <sys_read+120>: ldr x21, [sp,#32]
0xffffffc0001a6c3c <sys_read+124>: ldp x19, x20, [sp,#16]
0xffffffc0001a6c40 <sys_read+128>: ldp x29, x30, [sp],#80
0xffffffc0001a6c44 <sys_read+132>: ret
0xffffffc0001a6c48 <sys_read+136>: mov x20, #0xfffffffffffffff7 // #-9
0xffffffc0001a6c4c <sys_read+140>: b 0xffffffc0001a6c18 <SyS_read+88>
crash> quit
dannf@mustang:~$

[Regression Risk]
With Ming's proposed backport, risk is low because it only touches code built on arm64. Since crash was useless before, can't get much worse :)

Related branches

Ming Lei (tom-leiming)
description: updated
Ming Lei (tom-leiming)
summary: - trusty crash(7.0.3 cased) can't support arm64
+ trusty crash(7.0.3 based) can't support arm64
Ming Lei (tom-leiming)
description: updated
summary: - trusty crash(7.0.3 based) can't support arm64
+ trusty crash (7.0.3 based) can't support arm64
tags: added: trusty
summary: - trusty crash (7.0.3 based) can't support arm64
+ Crash utility doesn't support arm64 architecture
summary: - Crash utility doesn't support arm64 architecture
+ The crash reporting utility doesn't support arm64 architecture
tags: added: utopic
summary: - The crash reporting utility doesn't support arm64 architecture
+ The crash reporting utility doesn't support the arm64 architecture
summary: - The crash reporting utility doesn't support the arm64 architecture
+ The Crash utility doesn't support the arm64 architecture
description: updated
summary: - The Crash utility doesn't support the arm64 architecture
+ The "crash" utility doesn't support the ARM64 architecture
summary: - The "crash" utility doesn't support the ARM64 architecture
+ The "crash" utility doesn't run in the ARM64 architecture
summary: - The "crash" utility doesn't run in the ARM64 architecture
+ The "crash" utility doesn't run in ARM64 based devices
description: updated
Changed in crash (Ubuntu):
importance: Undecided → High
status: New → Triaged
Changed in crash (Ubuntu Trusty):
status: New → Triaged
importance: Undecided → High
dann frazier (dannf)
Changed in crash (Ubuntu Utopic):
status: Triaged → Fix Released
dann frazier (dannf)
description: updated
dann frazier (dannf)
Changed in crash (Ubuntu Trusty):
status: Triaged → In Progress
assignee: nobody → dann frazier (dannf)
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Ming, or anyone else affected,

Accepted crash into trusty-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/crash/7.0.3-3ubuntu4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in crash (Ubuntu Trusty):
status: In Progress → Fix Committed
tags: added: verification-needed
Changed in crash (Ubuntu Trusty):
assignee: dann frazier (dannf) → Craig Magina (craig.magina)
tags: added: verification-done
removed: verification-needed
Revision history for this message
Craig Magina (craig.magina) wrote :

Verified on an arm64 system by running:
sudo crash /boot/System.map-3.13.0-36-generic /usr/lib/debug/boot/vmlinux-3.13.0-36-generic
Then from the 'crash>' prompt, running 'dis sys_read' and getting the expected output.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package crash - 7.0.3-3ubuntu4

---------------
crash (7.0.3-3ubuntu4) trusty-proposed; urgency=medium

  * debian/patches/Updated-the-ARM64-implementation-to-support-Linux-3..patch:
    Basic support >= 3.13 kernels on arm64. (LP: #1354349).
 -- dann frazier <email address hidden> Tue, 30 Sep 2014 15:04:06 -0600

Changed in crash (Ubuntu Trusty):
status: Fix Committed → Fix Released
Revision history for this message
Chris J Arges (arges) wrote : Update Released

The verification of the Stable Release Update for crash has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.