Comments (4)
int3
int3
int3
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r12
> movq %fs:0x18, %rbx
leaq -0x10(%rbx), %rax
movq %rax, %fs:0x18
movq 0x18(%rdi), %rax
movl 0x10(%rax), %r13d
movl 0x18(%rax), %r15d
movl 0x20(%rax), %eax
movq %rax, -0x30(%rbp)
movl 0x38(%rdi), %edi
testl %edi, %edi
output:
/Users/xxx/work/projects/zCore/target/debug/zircon-loader prebuilt/zircon
userboot: option ""
userboot: option "console.shell=true"
userboot: decompressed BOOTFS to VMO!
userboot: searching bootfs for 'bin/bootsvc'
userboot: 'bin/bootsvc' has PT_INTERP "lib/ld.so.1"
userboot: searching bootfs for 'lib/ld.so.1'
userboot: userboot: loaded lib/ld.so.1 at 0x28200000000, entry point 0x282000575cc
userboot: userboot: loaded vDSO at 0x282000ad000, entry point 0x282000b4e6b
userboot: process bin/bootsvc started.
userboot: waiting for loader-service requests...
userboot: searching bootfs for 'lib/liblaunchpad.so'
userboot: searching bootfs for 'lib/libfdio.so'
userboot: searching bootfs for 'lib/libtrace-engine.so'
userboot: searching bootfs for 'lib/libasync-default.so'
userboot: searching bootfs for 'lib/libmemfs.so'
userboot: searching bootfs for 'lib/libc++.so.2'
userboot: searching bootfs for 'lib/libc++abi.so.1'
userboot: searching bootfs for 'lib/libunwind.so.1'
{{{reset}}}
{{{module:0:<application>:elf:dbd5f97ed489b42b}}}
{{{mmap:0x20200000000:0x30000:load:0:r:0}}}
{{{mmap:0x20200030000:0xfd000:load:0:rx:0x30000}}}
{{{mmap:0x2020012d000:0xf000:load:0:rw:0x12d000}}}
{{{mmap:0x2020013c000:0x1000:load:0:rw:0x13c000}}}
dso: id=dbd5f97ed489b42b base=0x0000020200000000 name=<application>
{{{module:0x3:liblaunchpad.so:elf:b76f0d8110442057}}}
{{{mmap:0x282000f6000:0x3000:load:0x3:r:0}}}
{{{mmap:0x282000f9000:0x4000:load:0x3:rx:0x3000}}}
{{{mmap:0x282000fd000:0x1000:load:0x3:rw:0x7000}}}
{{{mmap:0x282000fe000:0x1000:load:0x3:rw:0x8000}}}
dso: id=b76f0d8110442057 base=0x00000282000f6000 name=liblaunchpad.so
{{{module:0x2:<vDSO>:elf:10d74791a14f7360}}}
{{{mmap:0x282000ad000:0x7000:load:0x2:r:0}}}
{{{mmap:0x282000b4000:0x2000:load:0x2:rx:0x7000}}}
dso: id=10d74791a14f7360 base=0x00000282000ad000 name=<vDSO>
{{{module:0x4:libfdio.so:elf:c3bf7a8a244e7287}}}
{{{mmap:0x282000ff000:0x12000:load:0x4:r:0}}}
{{{mmap:0x28200111000:0x3c000:load:0x4:rx:0x12000}}}
{{{mmap:0x2820014d000:0x7000:load:0x4:rw:0x4e000}}}
{{{mmap:0x28200154000:0x4000:load:0x4:rw:0x55000}}}
dso: id=c3bf7a8a244e7287 base=0x00000282000ff000 name=libfdio.so
{{{module:0x5:libtrace-engine.so:elf:f0dd4c361cb612f2}}}
{{{mmap:0x28200158000:0x4000:load:0x5:r:0}}}
{{{mmap:0x2820015c000:0x6000:load:0x5:rx:0x4000}}}
{{{mmap:0x28200162000:0x1000:load:0x5:rw:0xa000}}}
{{{mmap:0x28200163000:0x1000:load:0x5:rw:0xb000}}}
dso: id=f0dd4c361cb612f2 base=0x0000028200158000 name=libtrace-engine.so
{{{module:0x6:libasync-default.so:elf:99150f38cfad363e}}}
{{{mmap:0x28200164000:0x1000:load:0x6:r:0}}}
{{{mmap:0x28200165000:0x1000:load:0x6:rx:0x1000}}}
{{{mmap:0x28200166000:0x1000:load:0x6:rw:0x2000}}}
dso: id=99150f38cfad363e base=0x0000028200164000 name=libasync-default.so
{{{module:0x7:libmemfs.so:elf:c78ca7d6f498fbff}}}
{{{mmap:0x28200167000:0xc000:load:0x7:r:0}}}
{{{mmap:0x28200173000:0x2d000:load:0x7:rx:0xc000}}}
{{{mmap:0x282001a0000:0x5000:load:0x7:rw:0x39000}}}
{{{mmap:0x282001a5000:0x1000:load:0x7:rw:0x3e000}}}
dso: id=c78ca7d6f498fbff base=0x0000028200167000 name=libmemfs.so
{{{module:0x8:libc++.so.2:elf:b93b2e97bb80b9ea}}}
{{{mmap:0x282001a6000:0x53000:load:0x8:r:0}}}
{{{mmap:0x282001f9000:0x74000:load:0x8:rx:0x53000}}}
{{{mmap:0x2820026d000:0x6000:load:0x8:rw:0xc7000}}}
{{{mmap:0x28200273000:0x7000:load:0x8:rw:0xcd000}}}
dso: id=b93b2e97bb80b9ea base=0x00000282001a6000 name=libc++.so.2
{{{module:0x9:libc++abi.so.1:elf:50ce8a297362fa00}}}
{{{mmap:0x2820027a000:0x18000:load:0x9:r:0}}}
{{{mmap:0x28200292000:0x1c000:load:0x9:rx:0x18000}}}
{{{mmap:0x282002ae000:0x4000:load:0x9:rw:0x34000}}}
{{{mmap:0x282002b2000:0x1000:load:0x9:rw:0x38000}}}
dso: id=50ce8a297362fa00 base=0x000002820027a000 name=libc++abi.so.1
{{{module:0x1:libc.so:elf:0e81ca5ebfa5379b}}}
{{{mmap:0x28200000000:0x4f000:load:0x1:r:0}}}
{{{mmap:0x2820004f000:0x59000:load:0x1:rx:0x4f000}}}
{{{mmap:0x282000a8000:0x2000:load:0x1:rw:0xa8000}}}
{{{mmap:0x282000aa000:0x3000:load:0x1:rw:0xaa000}}}
dso: id=0e81ca5ebfa5379b base=0x0000028200000000 name=libc.so
{{{module:0xa:libunwind.so.1:elf:b38531532aba8b47}}}
{{{mmap:0x282002b3000:0x4000:load:0xa:r:0}}}
{{{mmap:0x282002b7000:0x6000:load:0xa:rx:0x4000}}}
{{{mmap:0x282002bd000:0x1000:load:0xa:rw:0xa000}}}
{{{mmap:0x282002be000:0x1000:load:0xa:rw:0xb000}}}
dso: id=b38531532aba8b47 base=0x00000282002b3000 name=libunwind.so.1
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
Exception: EXC_BAD_ACCESS (code=1, address=0x18)
from zcore.
The CPU busy on libos is a known issue, but I don't know why...
The bad access exception (SIGFAULT) is a normal case on macOS. Because Zircon (and Linux) programs use %fs
to access thread local storage, but on macOS %fs
is forced to 0 and can not be changed. So in order to run native binaries, we have to handle this exception and dynamically patch the code from %fs
to %gs
, since there is a way to set gsbase
on macOS. See this file for details.
However, once you open lldb to debug-run the libos, the SIGFAULT will always be intercepted by the debugger and failed to reach our handler. This is a sad story: debugging for libos is unavailable on macOS now. Go to Linux for a happy life :(
from zcore.
Reproduced on WSL2 (on Windows 10 insider, 19624)
root@pikabox-rebirth:/c/root/works/code/git/zCore# cargo run --release -p zircon-loader prebuilt/zircon
Finished release [optimized] target(s) in 7.04s
Running `target/release/zircon-loader prebuilt/zircon`
userboot: option ""
userboot: option "console.shell=true"
userboot: decompressed BOOTFS to VMO!
userboot: searching bootfs for 'bin/bootsvc'
userboot: 'bin/bootsvc' has PT_INTERP "lib/ld.so.1"
userboot: searching bootfs for 'lib/ld.so.1'
userboot: userboot: loaded lib/ld.so.1 at 0x28200000000, entry point 0x282000575cc
userboot: userboot: loaded vDSO at 0x282000ad000, entry point 0x282000b4e6b
userboot: process bin/bootsvc started.
userboot: waiting for loader-service requests...
userboot: searching bootfs for 'lib/liblaunchpad.so'
userboot: searching bootfs for 'lib/libfdio.so'
userboot: searching bootfs for 'lib/libtrace-engine.so'
userboot: searching bootfs for 'lib/libasync-default.so'
userboot: searching bootfs for 'lib/libmemfs.so'
userboot: searching bootfs for 'lib/libc++.so.2'
userboot: searching bootfs for 'lib/libc++abi.so.1'
userboot: searching bootfs for 'lib/libunwind.so.1'
{{{reset}}}
{{{module:0:<application>:elf:dbd5f97ed489b42b}}}
{{{mmap:0x20200000000:0x30000:load:0:r:0}}}
{{{mmap:0x20200030000:0xfd000:load:0:rx:0x30000}}}
{{{mmap:0x2020012d000:0xf000:load:0:rw:0x12d000}}}
{{{mmap:0x2020013c000:0x1000:load:0:rw:0x13c000}}}
dso: id=dbd5f97ed489b42b base=0x0000020200000000 name=<application>
{{{module:0x3:liblaunchpad.so:elf:b76f0d8110442057}}}
{{{mmap:0x282000f6000:0x3000:load:0x3:r:0}}}
{{{mmap:0x282000f9000:0x4000:load:0x3:rx:0x3000}}}
{{{mmap:0x282000fd000:0x1000:load:0x3:rw:0x7000}}}
{{{mmap:0x282000fe000:0x1000:load:0x3:rw:0x8000}}}
dso: id=b76f0d8110442057 base=0x00000282000f6000 name=liblaunchpad.so
{{{module:0x2:<vDSO>:elf:10d74791a14f7360}}}
{{{mmap:0x282000ad000:0x7000:load:0x2:r:0}}}
{{{mmap:0x282000b4000:0x2000:load:0x2:rx:0x7000}}}
dso: id=10d74791a14f7360 base=0x00000282000ad000 name=<vDSO>
{{{module:0x4:libfdio.so:elf:c3bf7a8a244e7287}}}
{{{mmap:0x282000ff000:0x12000:load:0x4:r:0}}}
{{{mmap:0x28200111000:0x3c000:load:0x4:rx:0x12000}}}
{{{mmap:0x2820014d000:0x7000:load:0x4:rw:0x4e000}}}
{{{mmap:0x28200154000:0x4000:load:0x4:rw:0x55000}}}
dso: id=c3bf7a8a244e7287 base=0x00000282000ff000 name=libfdio.so
{{{module:0x5:libtrace-engine.so:elf:f0dd4c361cb612f2}}}
{{{mmap:0x28200158000:0x4000:load:0x5:r:0}}}
{{{mmap:0x2820015c000:0x6000:load:0x5:rx:0x4000}}}
{{{mmap:0x28200162000:0x1000:load:0x5:rw:0xa000}}}
{{{mmap:0x28200163000:0x1000:load:0x5:rw:0xb000}}}
dso: id=f0dd4c361cb612f2 base=0x0000028200158000 name=libtrace-engine.so
{{{module:0x6:libasync-default.so:elf:99150f38cfad363e}}}
{{{mmap:0x28200164000:0x1000:load:0x6:r:0}}}
{{{mmap:0x28200165000:0x1000:load:0x6:rx:0x1000}}}
{{{mmap:0x28200166000:0x1000:load:0x6:rw:0x2000}}}
dso: id=99150f38cfad363e base=0x0000028200164000 name=libasync-default.so
{{{module:0x7:libmemfs.so:elf:c78ca7d6f498fbff}}}
{{{mmap:0x28200167000:0xc000:load:0x7:r:0}}}
{{{mmap:0x28200173000:0x2d000:load:0x7:rx:0xc000}}}
{{{mmap:0x282001a0000:0x5000:load:0x7:rw:0x39000}}}
{{{mmap:0x282001a5000:0x1000:load:0x7:rw:0x3e000}}}
dso: id=c78ca7d6f498fbff base=0x0000028200167000 name=libmemfs.so
{{{module:0x8:libc++.so.2:elf:b93b2e97bb80b9ea}}}
{{{mmap:0x282001a6000:0x53000:load:0x8:r:0}}}
{{{mmap:0x282001f9000:0x74000:load:0x8:rx:0x53000}}}
{{{mmap:0x2820026d000:0x6000:load:0x8:rw:0xc7000}}}
{{{mmap:0x28200273000:0x7000:load:0x8:rw:0xcd000}}}
dso: id=b93b2e97bb80b9ea base=0x00000282001a6000 name=libc++.so.2
{{{module:0x9:libc++abi.so.1:elf:50ce8a297362fa00}}}
{{{mmap:0x2820027a000:0x18000:load:0x9:r:0}}}
{{{mmap:0x28200292000:0x1c000:load:0x9:rx:0x18000}}}
{{{mmap:0x282002ae000:0x4000:load:0x9:rw:0x34000}}}
{{{mmap:0x282002b2000:0x1000:load:0x9:rw:0x38000}}}
dso: id=50ce8a297362fa00 base=0x000002820027a000 name=libc++abi.so.1
{{{module:0x1:libc.so:elf:0e81ca5ebfa5379b}}}
{{{mmap:0x28200000000:0x4f000:load:0x1:r:0}}}
{{{mmap:0x2820004f000:0x59000:load:0x1:rx:0x4f000}}}
{{{mmap:0x282000a8000:0x2000:load:0x1:rw:0xa8000}}}
{{{mmap:0x282000aa000:0x3000:load:0x1:rw:0xaa000}}}
dso: id=0e81ca5ebfa5379b base=0x0000028200000000 name=libc.so
{{{module:0xa:libunwind.so.1:elf:b38531532aba8b47}}}
{{{mmap:0x282002b3000:0x4000:load:0xa:r:0}}}
{{{mmap:0x282002b7000:0x6000:load:0xa:rx:0x4000}}}
{{{mmap:0x282002bd000:0x1000:load:0xa:rw:0xa000}}}
{{{mmap:0x282002be000:0x1000:load:0xa:rw:0xb000}}}
dso: id=b38531532aba8b47 base=0x00000282002b3000 name=libunwind.so.1
bootsvc: Starting...
bootsvc: Taking root resource handle...
bootsvc: Creating bootfs service...
bootsvc: Retrieving boot image...
bootsvc: Decommitted BOOTDATA VMO from 0 to 0x4dbb000
bootsvc: Loading boot arguments...
bootsvc: Creating svcfs service...
bootsvc: Loading kernel VMOs...
bootsvc: Creating loader service...
bootsvc: Launching next process...
bootsvc: bootsvc.next = bin/component_manager,fuchsia-boot:///#meta/root.cm,--use-builtin-process-launcher
userboot: loader-service channel peer closed
userboot: finished!
bootsvc: Launched bin/component_manager
[component_manager] INFO: Component manager is starting up...
fshost: watching for exit
driver_manager: launch /boot/bin/svchost (svchost) OK
console.shell: enabled
from zcore.
I tried to inspect call stacks of the threads in the process with gdb when the it stuck on the cpu busy state.
(gdb) thread 3
[Switching to thread 3 (Thread 0x7f5de4bc1700 (LWP 4190))]
#0 0x000055d0280c2f35 in <zircon_object::vm::vmo::paged::VMObjectPaged as zircon_object::vm::vmo::VMObjectTrait>::create_child ()
(gdb) bt
#0 0x000055d0280c2f35 in <zircon_object::vm::vmo::paged::VMObjectPaged as zircon_object::vm::vmo::VMObjectTrait>::create_child ()
#1 0x000055d0280acf4c in zircon_object::vm::vmo::VmObject::create_child ()
#2 0x000055d02809996e in zircon_syscall::vmo::<impl zircon_syscall::Syscall>::sys_vmo_create_child ()
#3 0x000055d028069f55 in zircon_syscall::Syscall::syscall::{{closure}} ()
#4 0x000055d02807038b in <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll ()
#5 0x000055d028074224 in <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll ()
#6 0x000055d028074e71 in async_task::raw::RawTask<F,R,S,T>::run ()
#7 0x000055d02807d5cf in std::thread::local::LocalKey<T>::with ()
#8 0x000055d02807cd66 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#9 0x000055d02807dea2 in core::ops::function::FnOnce::call_once{{vtable-shim}} ()
#10 0x000055d02813c72f in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once ()
at /rustc/b543afca9b90ad6e4689b6d613ab51f9d3ba15e7/src/liballoc/boxed.rs:1008
#11 0x000055d02814b313 in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once ()
at /rustc/b543afca9b90ad6e4689b6d613ab51f9d3ba15e7/src/liballoc/boxed.rs:1008
#12 std::sys::unix::thread::Thread::new::thread_start () at src/libstd/sys/unix/thread.rs:87
#13 0x00007f5de5a3b6db in start_thread (arg=0x7f5de4bc1700) at pthread_create.c:463
#14 0x00007f5de554c88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) thread 6
[Switching to thread 6 (Thread 0x7f5de45be700 (LWP 4193))]
#0 0x000055d0280c4112 in zircon_object::vm::vmo::paged::VMObjectPaged::commit_page_internal ()
(gdb) bt
#0 0x000055d0280c4112 in zircon_object::vm::vmo::paged::VMObjectPaged::commit_page_internal ()
#1 0x000055d0280c4479 in zircon_object::vm::vmo::paged::VMObjectPaged::commit_page_internal ()
#2 0x000055d0280c4479 in zircon_object::vm::vmo::paged::VMObjectPaged::commit_page_internal ()
#3 0x000055d0280c267e in <zircon_object::vm::vmo::paged::VMObjectPaged as zircon_object::vm::vmo::VMObjectTrait>::commit_page ()
#4 0x000055d0280c8ce7 in zircon_object::vm::vmar::VmAddressRegion::map_ext ()
#5 0x000055d0280c88e9 in zircon_object::vm::vmar::VmAddressRegion::map_at_ext ()
#6 0x000055d028098686 in zircon_syscall::vmar::<impl zircon_syscall::Syscall>::sys_vmar_map ()
#7 0x000055d02806997b in zircon_syscall::Syscall::syscall::{{closure}} ()
#8 0x000055d02807038b in <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll ()
#9 0x000055d028074224 in <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll ()
#10 0x000055d028074e71 in async_task::raw::RawTask<F,R,S,T>::run ()
#11 0x000055d02807d5cf in std::thread::local::LocalKey<T>::with ()
#12 0x000055d02807cd66 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#13 0x000055d02807dea2 in core::ops::function::FnOnce::call_once{{vtable-shim}} ()
#14 0x000055d02813c72f in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once ()
at /rustc/b543afca9b90ad6e4689b6d613ab51f9d3ba15e7/src/liballoc/boxed.rs:1008
#15 0x000055d02814b313 in <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once ()
at /rustc/b543afca9b90ad6e4689b6d613ab51f9d3ba15e7/src/liballoc/boxed.rs:1008
#16 std::sys::unix::thread::Thread::new::thread_start () at src/libstd/sys/unix/thread.rs:87
#17 0x00007f5de5a3b6db in start_thread (arg=0x7f5de45be700) at pthread_create.c:463
#18 0x00007f5de554c88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb)
Seems the sys_vmo_create_child
syscall and the sys_vmar_map
syscall runs forever.
from zcore.
Related Issues (20)
- 关于本地测试和 Github CI 的一些改进意见 HOT 13
- 关于boot option HOT 5
- Panic when run `make image ARCH=riscv64` HOT 3
- Could not compile & run. HOT 17
- update alpine to 3.16 HOT 1
- 升级到 2022/06/17 PR #325 导致缓存失效 HOT 3
- linux_libc_test and linux-syscall test failed in x86_64 Qemu HOT 1
- 工具链和构建中间产物管理 HOT 1
- bulid error HOT 9
- zCore Pages不能显示所有的文档
- Encounter errors at dtb-walker when using Qemu-7.0 on Ubuntu 20.04.1 LTS HOT 6
- Unable to run qemu in macOS HOT 9
- Support for FU740 board HOT 3
- 硬件测试问题汇总 HOT 2
- zCore连续运行程序报错 HOT 1
- zCore使用qemu测试时无法使用pci HOT 14
- xtask 更改qemu网卡mac地址编译选项无效 HOT 1
- nvme磁盘测试报错 HOT 1
- C906/C910的拓展页表设置MAEE该如何关闭? HOT 3
- 编译报错
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zcore.