>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'

Reply via email to