Skip to content

args-many debugging {pintos} {swjungle}


README#

중간에 printf 출력을 넣어놓아 vm_alloc_page_with_initializer, page_lookup, load, try_handle_fault 상태를 측정했다.

args-single 출력결과#

Booting from Hard Disk..Kernel command line: -q -f put args-single run 'args-single onearg'
0 ~ 9fc00 1
100000 ~ ffe0000 1
Pintos booting with:
        base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB)
        ext_mem: 0x100000 ~ 0xffe0000 (Usable: 260,992 kB)
Calibrating timer...  419,020,800 loops/s.
hd0: unexpected interrupt
hd0:0: detected 353 sector (176 kB) disk, model "QEMU HARDDISK", serial "QM00001"
hd0:1: detected 20,160 sector (9 MB) disk, model "QEMU HARDDISK", serial "QM00002"
hd1: unexpected interrupt
hd1:0: detected 118 sector (59 kB) disk, model "QEMU HARDDISK", serial "QM00003"
Formatting file system...done.
Boot complete.
Putting 'args-single' into the file system...
Executing 'args-single onearg':
💾 mem_page: 0x3ff000, file_page: 0x0 (load)
💀 upage: 0x3ff000, hash_size: 0 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x3ff000 (page_lookup)
💾 mem_page: 0x400000, file_page: 0x1000 (load)
💀 upage: 0x400000, hash_size: 1 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x400000 (page_lookup)
💀 upage: 0x401000, hash_size: 2 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x401000 (page_lookup)
💀 upage: 0x402000, hash_size: 3 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x402000 (page_lookup)
💀 upage: 0x403000, hash_size: 4 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x403000 (page_lookup)
💀 upage: 0x404000, hash_size: 5 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x404000 (page_lookup)
💾 mem_page: 0x405000, file_page: 0x0 (load)
💀 upage: 0x405000, hash_size: 6 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x405000 (page_lookup)
💀 upage: 0x406000, hash_size: 7 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x406000 (page_lookup)
💀 upage: 0x4747f000, hash_size: 8 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x4747f000 (page_lookup)
💥 Page Fault address: 0x4747fff9
👁 Looking for page at 0x4747f000 (page_lookup)
💥 Page Fault address: 0x400c10
👁 Looking for page at 0x400000 (page_lookup)
💥 Page Fault address: 0x405f00
👁 Looking for page at 0x405000 (page_lookup)
💥 Page Fault address: 0x40102b
👁 Looking for page at 0x401000 (page_lookup)
💥 Page Fault address: 0x4045c0
👁 Looking for page at 0x404000 (page_lookup)
💥 Page Fault address: 0x402f3b
👁 Looking for page at 0x402000 (page_lookup)
💥 Page Fault address: 0x403037
👁 Looking for page at 0x403000 (page_lookup)
(args) begin
(args) argc = 2
(args) argv[0] = 'args-single'
(args) argv[1] = 'onearg'
(args) argv[2] = null
(args) end

args-many 출력결과#

Booting from Hard Disk..Kernel command line: -q -f put args-many run 'args-many a b c d e f g h i j k l m n o p q r s t u v'
0 ~ 9fc00 1
100000 ~ 13e0000 1
Pintos booting with:
        base_mem: 0x0 ~ 0x9fc00 (Usable: 639 kB)
        ext_mem: 0x100000 ~ 0x13e0000 (Usable: 19,328 kB)
Calibrating timer...  419,430,400 loops/s.
hd0: unexpected interrupt
hd0:0: detected 353 sector (176 kB) disk, model "QEMU HARDDISK", serial "QM00001"
hd0:1: detected 20,160 sector (9 MB) disk, model "QEMU HARDDISK", serial "QM00002"
hd1: unexpected interrupt
hd1:0: detected 118 sector (59 kB) disk, model "QEMU HARDDISK", serial "QM00003"
hd1:1: detected 8,064 sector (3 MB) disk, model "QEMU HARDDISK", serial "QM00004"
Formatting file system...done.
Boot complete.
Putting 'args-many' into the file system...
Executing 'args-many a b c d e f g h i j k l m n o p q r s t u v':
💾 mem_page: 0x3ff000, file_page: 0x0 (load)
💀 upage: 0x3ff000, hash_size: 0 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x3ff000 (page_lookup)
💾 mem_page: 0x400000, file_page: 0x1000 (load)
💀 upage: 0x400000, hash_size: 1 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x400000 (page_lookup)
💥 Page Fault address: 0x3ff000
👁 Looking for page at 0x3ff000 (page_lookup)
💀 upage: 0x401000, hash_size: 2 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x401000 (page_lookup)
💥 Page Fault address: 0x400000
👁 Looking for page at 0x400000 (page_lookup)
💀 upage: 0x402000, hash_size: 2 (vm_alloc_page_with_initializer)
👁 Looking for page at 0x402000 (page_lookup)
Kernel PANIC at ../../lib/kernel/list.c:78 in list_next(): assertion `is_head (elem) || is_interior (elem)' failed.
Call stack: 0x8004219b5c 0x8004219e0e 0x800421cd04 0x800421c63c 0x80042242ce 0x8004223912 0x8004223741 0x800421ed2f 0x800421e638 0x800421daae 0x800421d5e2 0x8004207861.
The `backtrace' program can make call stacks useful.
Read "Backtraces" in the "Debugging Tools" chapter
of the Pintos documentation for more information.
Timer: 69 ticks
Thread: 32 idle ticks, 34 kernel ticks, 3 user ticks
hd0:0: 0 reads, 0 writes
hd0:1: 49 reads, 264 writes
hd1:0: 118 reads, 0 writes
hd1:1: 0 reads, 0 writes
Console: 2165 characters output

readelf -a args-many#

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x400c10
  Start of program headers:          64 (bytes into file)
  Start of section headers:          58536 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         6
  Size of section headers:           64 (bytes)
  Number of section headers:         15
  Section header string table index: 14

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .text             PROGBITS         0000000000400000  00001000
       0000000000004544  0000000000000000  AX       0     0     4
  [ 2] .rodata           PROGBITS         0000000000404550  00005550
       000000000000097a  0000000000000000   A       0     0     16
  [ 3] .note.gnu.pr[...] NOTE             0000000000404ed0  00005ed0
       0000000000000020  0000000000000000   A       0     0     8
  [ 4] .bss              NOBITS           0000000000405f00  00005f00
       0000000000000524  0000000000000000  WA       0     0     32
  [ 5] .comment          PROGBITS         0000000000000000  00005ef0
       000000000000002b  0000000000000001  MS       0     0     1
  [ 6] .debug_aranges    PROGBITS         0000000000000000  00005f1b
       00000000000001e0  0000000000000000           0     0     1
  [ 7] .debug_info       PROGBITS         0000000000000000  000060fb
       00000000000040e9  0000000000000000           0     0     1
  [ 8] .debug_abbrev     PROGBITS         0000000000000000  0000a1e4
       0000000000000e43  0000000000000000           0     0     1
  [ 9] .debug_line       PROGBITS         0000000000000000  0000b027
       0000000000001a5b  0000000000000000           0     0     1
  [10] .debug_str        PROGBITS         0000000000000000  0000ca82
       00000000000008f6  0000000000000001  MS       0     0     1
  [11] .debug_line_str   PROGBITS         0000000000000000  0000d378
       00000000000001f6  0000000000000001  MS       0     0     1
  [12] .symtab           SYMTAB           0000000000000000  0000d570
       0000000000000b10  0000000000000018          13    47     8
  [13] .strtab           STRTAB           0000000000000000  0000e080
       000000000000038c  0000000000000000           0     0     1
  [14] .shstrtab         STRTAB           0000000000000000  0000e40c
       000000000000009a  0000000000000000           0     0     1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  D (mbind), l (large), p (processor specific)

There are no section groups in this file.

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x00000000003ff000 0x00000000003ff000
                 0x0000000000000190 0x0000000000000190  R      0x1000
  LOAD           0x0000000000001000 0x0000000000400000 0x0000000000400000
                 0x0000000000004ef0 0x0000000000004ef0  R E    0x1000
  LOAD           0x0000000000000f00 0x0000000000405f00 0x0000000000405f00
                 0x0000000000000000 0x0000000000000524  RW     0x1000
  NOTE           0x0000000000005ed0 0x0000000000404ed0 0x0000000000404ed0
                 0x0000000000000020 0x0000000000000020  R      0x8
  GNU_PROPERTY   0x0000000000005ed0 0x0000000000404ed0 0x0000000000404ed0
                 0x0000000000000020 0x0000000000000020  R      0x8
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10

 Section to Segment mapping:
  Segment Sections...
   00
   01     .text .rodata .note.gnu.property
   02     .bss
   03     .note.gnu.property
   04     .note.gnu.property
   05

There is no dynamic section in this file.

There are no relocations in this file.
No processor specific unwind information to decode

Symbol table '.symtab' contains 118 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS args.c
     2: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS lib.c
     3: 0000000000400155   358 FUNC    LOCAL  DEFAULT    1 vmsg
     4: 0000000000405f20  1024 OBJECT  LOCAL  DEFAULT    4 buf.0
     5: 00000000004003a0   130 FUNC    LOCAL  DEFAULT    1 swap
     6: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS entry.c
     7: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS random.c
     8: 0000000000406320   256 OBJECT  LOCAL  DEFAULT    4 s
     9: 0000000000406420     1 OBJECT  LOCAL  DEFAULT    4 s_i
    10: 0000000000406421     1 OBJECT  LOCAL  DEFAULT    4 s_j
    11: 0000000000406422     1 OBJECT  LOCAL  DEFAULT    4 inited
    12: 0000000000400c49    56 FUNC    LOCAL  DEFAULT    1 swap_byte
    13: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS stdio.c
    14: 0000000000400f07    41 FUNC    LOCAL  DEFAULT    1 isdigit
    15: 0000000000400f30    41 FUNC    LOCAL  DEFAULT    1 isprint
    16: 0000000000400fd7    84 FUNC    LOCAL  DEFAULT    1 vsnprintf_helper
    17: 00000000004047c0    24 OBJECT  LOCAL  DEFAULT    2 base_d
    18: 00000000004047f0    24 OBJECT  LOCAL  DEFAULT    2 base_o
    19: 0000000000404820    24 OBJECT  LOCAL  DEFAULT    2 base_x
    20: 0000000000404850    24 OBJECT  LOCAL  DEFAULT    2 base_X
    21: 000000000040193f   974 FUNC    LOCAL  DEFAULT    1 parse_conversion
    22: 0000000000404c38    10 OBJECT  LOCAL  DEFAULT    2 __func__.0
    23: 0000000000401d0d   830 FUNC    LOCAL  DEFAULT    1 format_integer
    24: 0000000000402092   219 FUNC    LOCAL  DEFAULT    1 format_string
    25: 000000000040204b    71 FUNC    LOCAL  DEFAULT    1 output_dup
    26: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS string.c
    27: 0000000000404d4e     7 OBJECT  LOCAL  DEFAULT    2 __func__.10
    28: 0000000000404d58     8 OBJECT  LOCAL  DEFAULT    2 __func__.9
    29: 0000000000404d60     7 OBJECT  LOCAL  DEFAULT    2 __func__.8
    30: 0000000000404d67     7 OBJECT  LOCAL  DEFAULT    2 __func__.7
    31: 0000000000404d6e     7 OBJECT  LOCAL  DEFAULT    2 __func__.6
    32: 0000000000404d75     7 OBJECT  LOCAL  DEFAULT    2 __func__.5
    33: 0000000000404d80     9 OBJECT  LOCAL  DEFAULT    2 __func__.4
    34: 0000000000404d89     7 OBJECT  LOCAL  DEFAULT    2 __func__.3
    35: 0000000000404d90     7 OBJECT  LOCAL  DEFAULT    2 __func__.2
    36: 0000000000404d98     8 OBJECT  LOCAL  DEFAULT    2 __func__.1
    37: 0000000000404da0     8 OBJECT  LOCAL  DEFAULT    2 __func__.0
    38: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS debug.c
    39: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS syscall.c
    40: 0000000000404e0b     5 OBJECT  LOCAL  DEFAULT    2 __func__.1
    41: 0000000000404e10     5 OBJECT  LOCAL  DEFAULT    2 __func__.0
    42: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS console.c
    43: 000000000040437d   115 FUNC    LOCAL  DEFAULT    1 add_char
    44: 00000000004043f0    93 FUNC    LOCAL  DEFAULT    1 flush
    45: 0000000000000000     0 FILE    LOCAL  DEFAULT  ABS debug.c
    46: 0000000000406423     1 OBJECT  LOCAL  DEFAULT    4 explained.0
    47: 00000000004042da    55 FUNC    GLOBAL DEFAULT    1 putchar
    48: 0000000000400330   112 FUNC    GLOBAL DEFAULT    1 fail
    49: 000000000040216d    93 FUNC    GLOBAL DEFAULT    1 __printf
    50: 0000000000402c53   455 FUNC    GLOBAL DEFAULT    1 strtok_r
    51: 000000000040108d    93 FUNC    GLOBAL DEFAULT    1 printf
    52: 0000000000405f08     1 OBJECT  GLOBAL DEFAULT    4 quiet
    53: 000000000040255d   336 FUNC    GLOBAL DEFAULT    1 memmove
    54: 000000000040102b    98 FUNC    GLOBAL DEFAULT    1 snprintf
    55: 0000000000403c90   145 FUNC    GLOBAL DEFAULT    1 munmap
    56: 0000000000402455   264 FUNC    GLOBAL DEFAULT    1 memcpy
    57: 0000000000404285    85 FUNC    GLOBAL DEFAULT    1 puts
    58: 0000000000403b50   153 FUNC    GLOBAL DEFAULT    1 dup2
    59: 00000000004008f7   212 FUNC    GLOBAL DEFAULT    1 check_file
    60: 000000000040369f   154 FUNC    GLOBAL DEFAULT    1 remove
    61: 0000000000400f59   126 FUNC    GLOBAL DEFAULT    1 vsnprintf
    62: 0000000000403e55   159 FUNC    GLOBAL DEFAULT    1 readdir
    63: 00000000004002bb   117 FUNC    GLOBAL DEFAULT    1 msg
    64: 0000000000403f8e   148 FUNC    GLOBAL DEFAULT    1 inumber
    65: 0000000000403ef4   154 FUNC    GLOBAL DEFAULT    1 isdir
    66: 0000000000404311   108 FUNC    GLOBAL DEFAULT    1 vhprintf
    67: 0000000000403be9   167 FUNC    GLOBAL DEFAULT    1 mmap
    68: 0000000000400190     0 NOTYPE  GLOBAL DEFAULT  ABS __executable_start
    69: 00000000004010ea  2133 FUNC    GLOBAL DEFAULT    1 __vprintf
    70: 0000000000402f3b    70 FUNC    GLOBAL DEFAULT    1 strnlen
    71: 0000000000400d77   358 FUNC    GLOBAL DEFAULT    1 random_bytes
    72: 0000000000402af6    77 FUNC    GLOBAL DEFAULT    1 strrchr
    73: 0000000000403204   175 FUNC    GLOBAL DEFAULT    1 debug_panic
    74: 00000000004038fc   155 FUNC    GLOBAL DEFAULT    1 write
    75: 00000000004037cd   148 FUNC    GLOBAL DEFAULT    1 filesize
    76: 00000000004041eb    55 FUNC    GLOBAL DEFAULT    1 vprintf
    77: 0000000000403d21   154 FUNC    GLOBAL DEFAULT    1 chdir
    78: 0000000000403a2b   148 FUNC    GLOBAL DEFAULT    1 tell
    79: 00000000004034db   148 FUNC    GLOBAL DEFAULT    1 exec
    80: 00000000004028f7   170 FUNC    GLOBAL DEFAULT    1 memchr
    81: 00000000004009cb   581 FUNC    GLOBAL DEFAULT    1 compare_bytes
    82: 000000000040356f   148 FUNC    GLOBAL DEFAULT    1 wait
    83: 0000000000404222    99 FUNC    GLOBAL DEFAULT    1 hprintf
    84: 0000000000400c10    57 FUNC    GLOBAL DEFAULT    1 _start
    85: 0000000000402bac   167 FUNC    GLOBAL DEFAULT    1 strstr
    86: 0000000000403861   155 FUNC    GLOBAL DEFAULT    1 read
    87: 00000000004004c7   366 FUNC    GLOBAL DEFAULT    1 exec_children
    88: 0000000000402f81   292 FUNC    GLOBAL DEFAULT    1 strlcpy
    89: 00000000004021ca   651 FUNC    GLOBAL DEFAULT    1 hex_dump
    90: 0000000000400edd    42 FUNC    GLOBAL DEFAULT    1 random_ulong
    91: 0000000000403603   156 FUNC    GLOBAL DEFAULT    1 create
    92: 00000000004026ad   304 FUNC    GLOBAL DEFAULT    1 memcmp
    93: 0000000000403447   148 FUNC    GLOBAL DEFAULT    1 fork
    94: 0000000000404022   152 FUNC    GLOBAL DEFAULT    1 symlink
    95: 0000000000402e1a   157 FUNC    GLOBAL DEFAULT    1 memset
    96: 0000000000400000   341 FUNC    GLOBAL DEFAULT    1 main
    97: 000000000040444d   208 FUNC    GLOBAL DEFAULT    1 debug_backtrace
    98: 00000000004030a5   351 FUNC    GLOBAL DEFAULT    1 strlcat
    99: 0000000000403997   148 FUNC    GLOBAL DEFAULT    1 seek
   100: 00000000004040ba   157 FUNC    GLOBAL DEFAULT    1 mount
   101: 00000000004027dd   282 FUNC    GLOBAL DEFAULT    1 strcmp
   102: 0000000000402a36   105 FUNC    GLOBAL DEFAULT    1 strcspn
   103: 0000000000400c81   246 FUNC    GLOBAL DEFAULT    1 random_init
   104: 0000000000404157   148 FUNC    GLOBAL DEFAULT    1 umount
   105: 0000000000400635   219 FUNC    GLOBAL DEFAULT    1 wait_children
   106: 00000000004032b3   200 FUNC    GLOBAL DEFAULT    1 halt
   107: 000000000040337b   204 FUNC    GLOBAL DEFAULT    1 exit
   108: 0000000000405f00     8 OBJECT  GLOBAL DEFAULT    4 test_name
   109: 0000000000402b43   105 FUNC    GLOBAL DEFAULT    1 strspn
   110: 0000000000402eb7   132 FUNC    GLOBAL DEFAULT    1 strlen
   111: 0000000000403739   148 FUNC    GLOBAL DEFAULT    1 open
   112: 00000000004029a1   149 FUNC    GLOBAL DEFAULT    1 strchr
   113: 0000000000400422   165 FUNC    GLOBAL DEFAULT    1 shuffle
   114: 0000000000403dbb   154 FUNC    GLOBAL DEFAULT    1 mkdir
   115: 0000000000400710   487 FUNC    GLOBAL DEFAULT    1 check_file_handle
   116: 0000000000403abf   145 FUNC    GLOBAL DEFAULT    1 close
   117: 0000000000402a9f    87 FUNC    GLOBAL DEFAULT    1 strpbrk

해결#

malloc, calloc에서 터지는 것을 보고 malloc 인자에 들어가는 숫자의 크기를 늘려줬더니 해결이 됐다. 그래서 아예 struct page 안에 의미없는 49개짜리 char형 배열을 넣어 당장의 문제를 해결했다.

해결 후 make check#

pass tests/threads/alarm-multiple
pass tests/userprog/args-none
pass tests/userprog/args-single
pass tests/userprog/args-multiple
pass tests/userprog/args-many
pass tests/userprog/args-dbl-space
pass tests/userprog/halt
pass tests/userprog/exit
pass tests/userprog/create-normal
pass tests/userprog/create-empty
pass tests/userprog/create-null
pass tests/userprog/create-bad-ptr
pass tests/userprog/create-long
pass tests/userprog/create-exists
pass tests/userprog/create-bound
pass tests/userprog/open-normal
pass tests/userprog/open-missing
pass tests/userprog/open-boundary
pass tests/userprog/open-empty
pass tests/userprog/open-null
pass tests/userprog/open-bad-ptr
pass tests/userprog/open-twice
pass tests/userprog/close-normal
pass tests/userprog/close-twice
pass tests/userprog/close-bad-fd
pass tests/userprog/read-normal
pass tests/userprog/read-bad-ptr
pass tests/userprog/read-boundary
pass tests/userprog/read-zero
pass tests/userprog/read-stdout
pass tests/userprog/read-bad-fd
pass tests/userprog/write-normal
pass tests/userprog/write-bad-ptr
pass tests/userprog/write-boundary
pass tests/userprog/write-zero
pass tests/userprog/write-stdin
pass tests/userprog/write-bad-fd
pass tests/userprog/fork-once
pass tests/userprog/fork-multiple
pass tests/userprog/fork-recursive
FAIL tests/userprog/fork-read
pass tests/userprog/fork-close
pass tests/userprog/fork-boundary
FAIL tests/userprog/exec-once
FAIL tests/userprog/exec-arg
FAIL tests/userprog/exec-boundary
pass tests/userprog/exec-missing
pass tests/userprog/exec-bad-ptr
FAIL tests/userprog/exec-read
FAIL tests/userprog/wait-simple
FAIL tests/userprog/wait-twice
FAIL tests/userprog/wait-killed
pass tests/userprog/wait-bad-pid
FAIL tests/userprog/multi-recurse
FAIL tests/userprog/multi-child-fd
pass tests/userprog/rox-simple
FAIL tests/userprog/rox-child
FAIL tests/userprog/rox-multichild
pass tests/userprog/bad-read
pass tests/userprog/bad-write
FAIL tests/userprog/bad-read2
FAIL tests/userprog/bad-write2
pass tests/userprog/bad-jump
FAIL tests/userprog/bad-jump2
pass tests/vm/pt-grow-stack
pass tests/vm/pt-grow-bad
pass tests/vm/pt-big-stk-obj
pass tests/vm/pt-bad-addr
pass tests/vm/pt-bad-read
pass tests/vm/pt-write-code
FAIL tests/vm/pt-write-code2
pass tests/vm/pt-grow-stk-sc
pass tests/vm/page-linear
FAIL tests/vm/page-parallel
FAIL tests/vm/page-merge-seq
FAIL tests/vm/page-merge-par
FAIL tests/vm/page-merge-stk
FAIL tests/vm/page-merge-mm
pass tests/vm/page-shuffle
FAIL tests/vm/mmap-read
FAIL tests/vm/mmap-close
FAIL tests/vm/mmap-unmap
FAIL tests/vm/mmap-overlap
FAIL tests/vm/mmap-twice
FAIL tests/vm/mmap-write
FAIL tests/vm/mmap-ro
FAIL tests/vm/mmap-exit
FAIL tests/vm/mmap-shuffle
FAIL tests/vm/mmap-bad-fd
FAIL tests/vm/mmap-clean
FAIL tests/vm/mmap-inherit
FAIL tests/vm/mmap-misalign
FAIL tests/vm/mmap-null
FAIL tests/vm/mmap-over-code
FAIL tests/vm/mmap-over-data
FAIL tests/vm/mmap-over-stk
FAIL tests/vm/mmap-remove
FAIL tests/vm/mmap-zero
FAIL tests/vm/mmap-bad-fd2
FAIL tests/vm/mmap-bad-fd3
FAIL tests/vm/mmap-zero-len
FAIL tests/vm/mmap-off
FAIL tests/vm/mmap-bad-off
FAIL tests/vm/mmap-kernel
FAIL tests/vm/lazy-file
pass tests/vm/lazy-anon
FAIL tests/vm/swap-file
FAIL tests/vm/swap-anon
FAIL tests/vm/swap-iter
FAIL tests/vm/swap-fork
pass tests/filesys/base/lg-create
pass tests/filesys/base/lg-full
pass tests/filesys/base/lg-random
pass tests/filesys/base/lg-seq-block
pass tests/filesys/base/lg-seq-random
pass tests/filesys/base/sm-create
pass tests/filesys/base/sm-full
pass tests/filesys/base/sm-random
pass tests/filesys/base/sm-seq-block
pass tests/filesys/base/sm-seq-random
FAIL tests/filesys/base/syn-read
pass tests/filesys/base/syn-remove
FAIL tests/filesys/base/syn-write
pass tests/threads/alarm-single
pass tests/threads/alarm-multiple
pass tests/threads/alarm-simultaneous
pass tests/threads/alarm-priority
pass tests/threads/alarm-zero
pass tests/threads/alarm-negative
pass tests/threads/priority-change
pass tests/threads/priority-donate-one
pass tests/threads/priority-donate-multiple
pass tests/threads/priority-donate-multiple2
pass tests/threads/priority-donate-nest
pass tests/threads/priority-donate-sema
pass tests/threads/priority-donate-lower
pass tests/threads/priority-fifo
pass tests/threads/priority-preempt
pass tests/threads/priority-sema
pass tests/threads/priority-condvar
pass tests/threads/priority-donate-chain
FAIL tests/vm/cow/cow-simple
54 of 141 tests failed.