>Synopsis: This script consistently crashes OpenBSD on BBB.
>Category: system
>Environment:
System : OpenBSD 5.7
Details : OpenBSD 5.7 (GENERIC-OMAP) #18: Wed Mar 11 13:54:58 AEDT
2015
[email protected]:/usr/src/sys/arch/armv7/compile/GENERIC-OMAP
Architecture: OpenBSD.armv7
Machine : armv7
>Description:
See script at the end of this bug report. It consistently crashes this Beagle
Bone Black to ddb after a few minutes. It's a fairly trivial pycrypto AES
script. It may simply be the result for intense CPU, but it's worth pointing
out that I built 70-odd ports on this box over several days of nonstop
compiling without this issue. On the other hand, this particular script makes
it crash every time. Note also that 'boot dump' resulted in an infinite loop
of 'rxeoq' messages - see below.
I had an very similar crash earlier that was very similar. If you want me to
run it a few more times to document fully, I can do that.
>How-To-Repeat:
Run the script below.
>Fix:
Sorry, I lack the requisite wizardry. Happy to repeat/capture more if it helps.
dmesg:
OpenBSD 5.7 (GENERIC-OMAP) #18: Wed Mar 11 13:54:58 AEDT 2015
[email protected]:/usr/src/sys/arch/armv7/compile/GENERIC-OMAP
real mem = 536870912 (512MB)
avail mem = 518791168 (494MB)
warning: no entropy supplied by boot loader
mainbus0 at root
cpu0 at mainbus0: ARM Cortex A8 R3 rev 2 (ARMv7 core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache
omap0 at mainbus0: BeagleBone
prcm0 at omap0 rev 0.2
sitaracm0 at omap0: control module, rev 1.0
intc0 at omap0 rev 5.0
edma0 at omap0 rev 0.0
dmtimer0 at omap0 rev 3.1
dmtimer1 at omap0 rev 3.1
omdog0 at omap0 rev 0.1
omgpio0 at omap0: rev 0.1
gpio0 at omgpio0: 32 pins
omgpio1 at omap0: rev 0.1
gpio1 at omgpio1: 32 pins
omgpio2 at omap0: rev 0.1
gpio2 at omgpio2: 32 pins
omgpio3 at omap0: rev 0.1
gpio3 at omgpio3: 32 pins
omap0: device tiiic unit 0 not configured
omap0: device tiiic unit 1 not configured
omap0: device tiiic unit 2 not configured
ommmc0 at omap0
sdmmc0 at ommmc0
ommmc1 at omap0
sdmmc1 at ommmc1
com0 at omap0: ti16750, 64 byte fifo
com0: console
cpsw0 at omap0: version 1.12 (0), address 78:a5:04:bc:95:39
ukphy0 at cpsw0 phy 0: Generic IEEE 802.3u media interface, rev. 1: OUI
0x0001f0, model 0x000f
scsibus0 at sdmmc1: 2 targets, initiator 0
sd0 at scsibus0 targ 1 lun 0: <SD/MMC, Drive #01, > SCSI2 0/direct fixed
sd0: 3688MB, 512 bytes/sector, 7553024 sectors
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
boot device: sd0
root on sd0a (4bfdc2c4a7c17af5.a) swap on sd0b dump on sd0b
WARNING: / was not properly unmounted
WARNING: CHECK AND RESET THE DATE!
usbdevs:
usbdevs: no USB controllers found
pcidump:
acpidump:
Here is the crash:
uvm_fault(0xc935b578, 0, 1, 0) -> e
Fatal kernel mode data abort: 'Translation Fault (P)'
trapframe: 0xcfd12d9c
DFSR=00000007, DFAR=0000000c, spsr=60000113
r0 =00000000, r1 =c91c3844, r2 =4ffc8000, r3 =00000000
r4 =0000000b, r5 =c91c3844, r6 =00000003, r7 =9f013000
r8 =c90a3ba0, r9 =00000022, r10=9f01300e, r11=cfd12e34
r12=c8f60bb4, ssp=cfd12de8, slr=c051a5e4, pc =c051a5e4
Stopped at pmap_enter+0x1cc: ldr r7, [r0, #0x00c]
ddb> show panic
the kernel did not panic
ddb> ps
PID PPID PGRP UID S FLAGS WAIT COMMAND
14341 4821 14341 0 3 0x83 poll top
4821 1809 4821 0 3 0x8b pause ksh
1809 26990 1809 0 3 0x92 select sshd
21848 28178 21848 0 2 0x3 python2.7
15567 1 15567 0 3 0x83 ttyin getty
30130 1 30130 0 2 0 cron
26653 1 26653 99 3 0x90 poll sndiod
28178 25559 28178 0 3 0x8b pause ksh
25559 26990 25559 0 3 0x92 select sshd
26990 1 26990 0 3 0x80 select sshd
3657 22430 26405 83 3 0x90 poll ntpd
*22430 26405 26405 83 7 0x10 ntpd
26405 1 26405 0 3 0x80 poll ntpd
3247 23070 23070 74 2 0x490 pflogd
23070 1 23070 0 3 0x80 netio pflogd
15911 15137 15137 73 2 0x90 syslogd
15137 1 15137 0 3 0x80 netio syslogd
15836 0 0 0 3 0x14200 pgzero zerothread
17353 0 0 0 3 0x14200 aiodoned aiodoned
24683 0 0 0 3 0x14200 syncer update
13057 0 0 0 3 0x14200 cleaner cleaner
20386 0 0 0 3 0x14200 reaper reaper
32478 0 0 0 3 0x14200 pgdaemon pagedaemon
25822 0 0 0 3 0x14200 bored crypto
11400 0 0 0 3 0x14200 pftm pfpurge
27882 0 0 0 3 0x14200 mmctsk sdmmc1
24540 0 0 0 3 0x14200 mmctsk sdmmc0
24391 0 0 0 3 0x14200 bored systqmp
31545 0 0 0 3 0x14200 bored systq
3318 0 0 0 3 0x40014200 idle0
4 0 0 0 3 0x14200 kmalloc kmthread
1 0 1 0 3 0x82 wait init
0 -1 0 0 3 0x10200 scheduler swapper
ddb> trace
pmap_enter+0xc
scp=0xc051a424 rlv=0xc04c3cb0 (uvm_fault+0x9fc)
rsp=0xcfd12e38 rfp=0xcfd12f58
r10=0x00000005 r9=0xcfd12e84 r8=0x00000000 r7=0x00000000
r6=0xc91be350 r5=0xc91be350 r4=0xc4a127d0
uvm_fault+0xc
scp=0xc04c32c0 rlv=0xc05160c4 (data_abort_handler+0x248)
rsp=0xcfd12f5c rfp=0xcfd12fb0
r10=0xcfd12fb4 r9=0xcfd11000 r8=0x00000001 r7=0xc935b578
r6=0x00000002 r5=0xc920a6fc r4=0x4ffc8000
data_abort_handler+0xc
scp=0xc0515e88 rlv=0xc0515890 (address_exception_entry+0x50)
rsp=0xcfd12fb4 rfp=0xbffcadf4
r10=0x00000010 r9=0x42643b00 r8=0x4834b200 r7=0x4ffc8910
r6=0x49a99f3c r5=0x49a99f66 r4=0x00000910
ddb> show registers
spsr 0x60000113
r0 0
r1 0xc91c3844 _bss_end__+0x8b7b30c
r2 0x4ffc8000
r3 0
r4 0xb
r5 0xc91c3844 _bss_end__+0x8b7b30c
r6 0x3
r7 0x9f013000
r8 0xc90a3ba0 _bss_end__+0x8a5b668
r9 0x22 fiqvector+0x6
r10 0x9f01300e
r11 0xcfd12e34 _bss_end__+0xf6ca8fc
r12 0xc8f60bb4 _bss_end__+0x891867c
usr_sp 0xbffcad98
usr_lr 0x425fa490
svc_sp 0xcfd12de8 _bss_end__+0xf6ca8b0
svc_lr 0xc051a5e4 pmap_enter+0x1cc
pc 0xc051a5e4 pmap_enter+0x1cc
und_sp 0xcfd11ff0 _bss_end__+0xf6c9ab8
abt_sp 0xc06c2000 _bss_end__+0x79ac8
irq_sp 0xc06c1000 _bss_end__+0x78ac8
pmap_enter+0x1cc: ldr r7, [r0, #0x00c]
ddb> show mount
flags 34125200003<RDONLY,SYNCHRONOUS>
vnodecovered 0xe51b3044 syncer 0xe58d4000 data 0x1a0700c
Fatal kernel mode data abort: 'Alignment Fault 1'
trapframe: 0xcfd12b4c
DFSR=00000001, DFAR=e1a0201d, spsr=60000113
r0 =0000005f, r1 =c05c982c, r2 =26102fdf, r3 =26102fdf
r4 =e1a02005, r5 =01a0700c, r6 =c05c9770, r7 =c05d7fa0
r8 =cfd12d9c, r9 =c03a035c, r10=c051a5e4, r11=cfd12be0
r12=c05cf2e4, ssp=cfd12b98, slr=c05d7fa0, pc =c03c69c0
Stopped at vfs_mount_print+0x48: ldr r0, [r4, #0x018]
ddb> show pool
POOL
uvm_fault(0xc05fb918, e58d4000, 1, 0) -> e
Fatal kernel mode data abort: 'Translation Fault (S)'
trapframe: 0xcfd12824
DFSR=00000005, DFAR=e58d4000, spsr=a0000113
r0 =e58d4000, r1 =ffffffff, r2 =e58d4000, r3 =c059c4e4
r4 =cfd1293c, r5 =00000000, r6 =00000000, r7 =00000000
r8 =00000005, r9 =00000000, r10=00000000, r11=cfd12900
r12=00000073, ssp=cfd12870, slr=c03a0020, pc =c0504e1c
Stopped at strlen+0x4: ldrb r0, [r0]
ddb> show malloc
Type InUse MemUse HighUse Limit Requests Type Lim Kern Lim
devbuf 675 208K 209K 39321K 1208 0 0
pcb 27 5K 10K 39321K 103 0 0
routetbl 83 4K 4K 39321K 121 0 0
ifaddr 38 10K 10K 39321K 39 0 0
ioctlops 0 0K 4K 39321K 1473 0 0
mount 3 3K 3K 39321K 3 0 0
vnodes 994 62K 62K 39321K 1003 0 0
UFS quota 1 8K 8K 39321K 1 0 0
UFS mount 13 20K 20K 39321K 13 0 0
shm 2 0K 0K 39321K 2 0 0
VM map 2 0K 0K 39321K 2 0 0
sem 2 0K 0K 39321K 2 0 0
dirhash 39 7K 7K 39321K 42 0 0
VM pmap 18 0K 0K 39321K 238 0 0
file desc 1 0K 2K 39321K 8 0 0
proc 10 2K 2K 39321K 10 0 0
NFS srvsock 1 0K 0K 39321K 1 0 0
NFS daemon 1 8K 8K 39321K 1 0 0
in_multi 14 0K 0K 39321K 14 0 0
ether_multi 1 0K 0K 39321K 1 0 0
ISOFS mount 1 8K 8K 39321K 1 0 0
MSDOSFS mount 1 4K 4K 39321K 1 0 0
ttys 378 259K 259K 39321K 378 0 0
exec 0 0K 1K 39321K 256 0 0
pfkey data 1 0K 0K 39321K 2 0 0
xform_data 0 0K 0K 39321K 4 0 0
pagedep 1 2K 2K 39321K 1 0 0
inodedep 1 8K 8K 39321K 1 0 0
newblk 1 0K 0K 39321K 1 0 0
VM swap 7 22K 22K 39321K 7 0 0
UVM amap 8135 1763K 1763K 39321K 23085 0 0
UVM aobj 2 1K 1K 39321K 2 0 0
crypto data 1 1K 1K 39321K 1 0 0
NDP 5 0K 0K 39321K 5 0 0
temp 47 22K 101K 39321K 11332 0 0
ddb> boot dump
boot: howto=00004900 curproc=0xc920a6fc
rxeoq
rxeoq
rxeoq
rxeoq
rxeoq
rxeoq
(ad infinitum)
kandor:crashtest # ls -l
total 304612
-rwxr-xr-x 1 root wheel 1155 Jun 18 04:12 encrypt_file.py
-rw-r--r-- 1 root wheel 155892449 Jun 18 04:04 usr_local.tar.gz
Here is script:
#!/usr/bin/env python
import errno, gzip, hashlib, os, paramiko, re, sys, tarfile, time
from Crypto import Random
from Crypto.Cipher import AES
# ######################################
# CRYPTO FUNCTIONS
#
# from
http://stackoverflow.com/questions/20852664/python-pycrypto-encrypt-decrypt-text-files-with-aes
#
# ######################################
def pad(s):
return s + b"\0" * (AES.block_size - len(s) % AES.block_size)
def encrypt(message, key, key_size=256):
message = pad(message)
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, iv)
return iv + cipher.encrypt(message)
def decrypt(ciphertext, key):
iv = ciphertext[:AES.block_size]
cipher = AES.new(key, AES.MODE_CBC, iv)
plaintext = cipher.decrypt(ciphertext[AES.block_size:])
return plaintext.rstrip(b"\0")
def encrypt_file(file_name, key):
with open(file_name, 'rb') as fo:
plaintext = fo.read()
enc = encrypt(plaintext, key)
with open(file_name + ".enc", 'wb') as fo:
fo.write(enc)
encryption_key = '12345678901234567890123456789012'
print 'beginning encryption'
encrypt_file('/root/crashtest/usr_local.tar.gz',encryption_key)
print 'encryption complete'