Giter Site home page Giter Site logo

Comments (4)

kylixs avatar kylixs commented on August 16, 2024

Debug failed at
image

	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.

wangrunji0408 avatar wangrunji0408 commented on August 16, 2024

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.

benpigchu avatar benpigchu commented on August 16, 2024

Reproduced on WSL2 (on Windows 10 insider, 19624)
image

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.

benpigchu avatar benpigchu commented on August 16, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.