flexEmu icon indicating copy to clipboard operation
flexEmu copied to clipboard

Error: UcError(FETCH_UNMAPPED)

Open templexxx opened this issue 2 years ago • 4 comments

after long run(commit: https://github.com/starcoinorg/omo/pull/37/commits/00d75c270b814e8fc727d3b986a2bdbc59dc09ee):

➜  omo git:(fix.ucerr) ✗ ./omob --config omo/config.toml.example run mvm -- "-b" "0x89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2"            
[2022-11-05T11:00:04Z INFO  omo] load info: LoadInfo { entrypoint: 4406816, elf_mem_start: 4194304, elf_entry: 4406816, brk_address: 9277440, mmap_address: 2415919104, load_address: 0, init_stack_address: 0 }
[2022-11-05T11:00:04Z WARN  omo::os::linux] [mmap2] fd 4294967295 not handled
[2022-11-05T11:00:04Z WARN  omo::os::linux] not implemented, sigaltstack(0, 2146684208) pc: 7837672
[2022-11-05T11:00:04Z WARN  omo::os::linux] [mmap2] fd 4294967295 not handled
[2022-11-05T11:00:06Z WARN  omo::os::linux] failed to open (./89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2/07d30758eba43dc03ce93dcb1c4da4d3b5931b6f60b12c8441677e7b23daa035, 0, 0): IOError(Os { code: 2, kind: NotFound, message: "No such file or directory" })
[2022-11-05T11:00:07Z WARN  omo::os::linux] [mmap2] fd 4294967295 not handled
[2022-11-05T11:00:32Z WARN  omo::os::linux] [mmap2] fd 4294967295 not handled
[2022-11-05T11:01:28Z WARN  omo::os::linux] [mmap2] fd 4294967295 not handled
Error: UcError(FETCH_UNMAPPED)

p.s.

file: ./89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2/07d30758eba43dc03ce93dcb1c4da4d3b5931b6f60b12c8441677e7b23daa035 is not found in host, not found is expected, and no bad things happened.

templexxx avatar Nov 05 '22 11:11 templexxx

looks like read file after mmap2, but before read syscall, UnError happends.

TODO

  1. checking mmap result
  2. checking fcntl64 fstat64 __llseek result (these 3 syscalls will be invoked before read)
  3. checking read buffer's memory address

templexxx avatar Nov 22 '22 11:11 templexxx

mini-starcoin-vm may cost too much memory, trying to slim it later

templexxx avatar Nov 24 '22 14:11 templexxx

trying to make a better mmap allocator:

not just keeping adding mmap base_address

templexxx avatar Nov 26 '22 10:11 templexxx

after adding mmap manager, mini-starcoin-vm could run longer, but meet write error:

  1. where is the thread comes from? Isn't it a single-thread process?
  2. WRITE_UNMAPPED means write to memory which hasn't been mmapped? How could that happen?
[2022-11-27T07:25:41Z DEBUG omo::utils] read_string from: 10184051, get: ./89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2/807857adaf9123a027764030acc3f1521012bfad2dcfc256dc8f88182b29ab0a
[2022-11-27T07:25:41Z DEBUG omo::os::linux] open(./89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2/807857adaf9123a027764030acc3f1521012bfad2dcfc256dc8f88182b29ab0a, 0, 0) pc: 7854364
[2022-11-27T07:25:41Z DEBUG omo::os::linux] succeed to open (./89e573289fc8b29dd728490a5fd45b6bbf783fb2352b3a70f58b21f508593ff2/807857adaf9123a027764030acc3f1521012bfad2dcfc256dc8f88182b29ab0a, 0, 0) fd: 11
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, FCNTL64
[2022-11-27T07:25:41Z DEBUG omo::os::linux] fcntl64(11, 2, 1) pc: 7827116
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, FSTAT64
[2022-11-27T07:25:41Z DEBUG omo::os::linux] fstat64 (11, 2146675240) pc: 7837920
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, _LLSEEK
[2022-11-27T07:25:41Z DEBUG omo::os::linux] _llseek(11, 0, 0, 2146675504, 1) pc: 7860212
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 7902924, 8) pc: 7854364
thread '[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9277456, 4) pc: 7854364
main[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9022962, 15) pc: 7854364
' panicked at '[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9013961, 17) pc: 7854364
capacity overflow[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9022977, 3) pc: 7854364
', [2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 7904043, 28) pc: 7854364
library/alloc/src/raw_vec.rs[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9022303, 1) pc: 7854364
:[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 2146674736, 3) pc: 7854364
517[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9022303, 1) pc: 7854364
:[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 2146674738, 1) pc: 7854364
5[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9024810, 1) pc: 7854364

[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, WRITE
[2022-11-27T07:25:41Z DEBUG omo::os::linux] write(2, 9022980, 78) pc: 7854364
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, RT_SIGPROCMASK
[2022-11-27T07:25:41Z DEBUG omo::os::linux] rt_sigprocmask(1, 9038444, 2146674920, 16), pc: 7836464
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, TKILL
[2022-11-27T07:25:41Z WARN  omo::os::linux] not implemented, tkill pc: 7836676
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, RT_SIGPROCMASK
[2022-11-27T07:25:41Z DEBUG omo::os::linux] rt_sigprocmask(3, 2146674920, 0, 16), pc: 7836464
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, RT_SIGPROCMASK
[2022-11-27T07:25:41Z DEBUG omo::os::linux] rt_sigprocmask(1, 9038460, 0, 16), pc: 7836464
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, RT_SIGACTION
[2022-11-27T07:25:41Z DEBUG omo::os::linux] rt_sigaction(6, 2146675096, 0), pc: 7826132
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, TKILL
[2022-11-27T07:25:41Z WARN  omo::os::linux] not implemented, tkill pc: 7826152
[2022-11-27T07:25:41Z INFO  omo::os::linux] handle syscall, RT_SIGPROCMASK
[2022-11-27T07:25:41Z DEBUG omo::os::linux] rt_sigprocmask(2, 2146675124, 0, 16), pc: 7826192
Error: UcError(WRITE_UNMAPPED)

templexxx avatar Nov 27 '22 07:11 templexxx