Back to why it is failing.

Based on what you sent us:
..
0x000010000000b000 0x0000100000016000 [44.0 kB] flags=fmF perm=r 
offset=0x00000000 path=/libzfs.so
0x0000100000016000 0x0000100000035000 [124.0 kB] flags=fmF perm=rx 
offset=0x0000b000 path=/libzfs.so
0x0000100000035000 0x000010000003f000 [40.0 kB] flags=fmF perm=r 
offset=0x0002a000 path=/libzfs.so

*0x0000100000040000 0x0000100000041000 [4.0 kB] flags=fmF perm=r 
offset=0x00034000 path=/libzfs.so*0x0000100000041000 0x0000100000042000 
[4.0 kB] flags=fmF perm=rw offset=0x00035000 path=/libzfs.so
..

The page fault in arch_relocate_jump_slot() is caused by an attempt to 
write at the address 0x100000040ca8 which falls into a 4th mapping range 
from the above which can only be read from. So that is the permission 
fault. The question is why the address is in that range? The address should 
be somewhere in GOT in the 5th range - 0x0000100000041000 
0x0000100000042000 [4.0 kB] flags=fmF perm=rw offset=0x00035000 
path=/libzfs.so which has read/write permission.

On Ubuntu host when I run the same command like and add extra debugging to 
print statements like this:

ELF [tid:36, mod:5, /*libzfs*.so]: arch_relocate_jump_slot, 
addr:0x10000007a8d0
They all print addresses within the range 0x10000007a000 - 0x10000007b000 
which are read-write permitted as they should be:
0x0000100000044000 0x000010000004e000 [40.0 kB]        flags=fmF      
perm=r    offset=0x00000000 path=/libzfs.so
0x000010000004e000 0x000010000006f000 [132.0 kB]       flags=fmF      
perm=rx   offset=0x0000a000 path=/libzfs.so
0x000010000006f000 0x0000100000079000 [40.0 kB]        flags=fmF      
perm=r    offset=0x0002b000 path=/libzfs.so
0x0000100000079000 0x000010000007a000 [4.0 kB]         flags=fmF      
perm=r    offset=0x00034000 path=/libzfs.so
*0x000010000007a000 0x000010000007c000 [8.0 kB]         flags=fmF      
perm=rw   offset=0x00035000 path=/libzfs.so *
 
I wonder if we have a bug when calculating where each segment should be 
mapped:

400 void file::load_segment(const Elf64_Phdr& phdr)
 401 {
 402     ulong vstart = align_down(phdr.p_vaddr, mmu::page_size);
 403     ulong filesz_unaligned = phdr.p_vaddr + phdr.p_filesz - vstart;
 404     ulong filesz = align_up(filesz_unaligned, mmu::page_size);
 405     ulong memsz = align_up(phdr.p_vaddr + phdr.p_memsz, 
mmu::page_size) - vstart;
 406 
 407     unsigned perm = get_segment_mmap_permissions(phdr);
 408 
 409     auto flag = mmu::mmap_fixed | (mlocked() ? mmu::mmap_populate : 0);
 410     mmu::map_file(_base + vstart, filesz, flag, perm, _f, 
align_down(phdr.p_offset, mmu::page_size));
 411     if (phdr.p_filesz != phdr.p_memsz) {
 412         assert(perm & mmu::perm_write);
 413         memset(_base + vstart + filesz_unaligned, 0, filesz - 
filesz_unaligned);
 414         if (memsz != filesz) {
 415             mmu::map_anon(_base + vstart + filesz, memsz - filesz, 
flag, perm);
 416         }
 417     }
 418     elf_debug("Loaded and mapped PT_LOAD segment at: %018p of size: 
0x%x\n", _base + vstart, filesz);
 419 }

BTW I am also interested what the output of this readelf command for your 
libzfs.so is. Mine is this:

 readelf -l build/release/libzfs-stripped.so 

Elf file type is DYN (Shared object file)
Entry point 0xd1d0
There are 11 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x00000000000098e0 0x00000000000098e0  R      0x1000
  LOAD           0x000000000000a000 0x000000000000a000 0x000000000000a000
                 0x00000000000201a1 0x00000000000201a1  R E    0x1000
  LOAD           0x000000000002b000 0x000000000002b000 0x000000000002b000
                 0x0000000000009258 0x0000000000009258  R      0x1000
  LOAD           0x0000000000034cb0 0x0000000000035cb0 0x0000000000035cb0
                 0x00000000000017f0 0x0000000000002c00  RW     0x1000
  DYNAMIC        0x0000000000034d80 0x0000000000035d80 0x0000000000035d80
                 0x00000000000001d0 0x00000000000001d0  RW     0x8
  NOTE           0x00000000000002a8 0x00000000000002a8 0x00000000000002a8
                 0x0000000000000020 0x0000000000000020  R      0x8
  NOTE           0x00000000000002c8 0x00000000000002c8 0x00000000000002c8
                 0x0000000000000024 0x0000000000000024  R      0x4
  GNU_PROPERTY   0x00000000000002a8 0x00000000000002a8 0x00000000000002a8
                 0x0000000000000020 0x0000000000000020  R      0x8
  GNU_EH_FRAME   0x000000000002f768 0x000000000002f768 0x000000000002f768
                 0x0000000000000cec 0x0000000000000cec  R      0x4
  GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000000000 0x0000000000000000  RW     0x10
  GNU_RELRO      0x0000000000034cb0 0x0000000000035cb0 0x0000000000035cb0
                 0x0000000000000350 0x0000000000000350  R      0x1

 Section to Segment mapping:
  Segment Sections...
   00     .note.gnu.property .note.gnu.build-id .gnu.hash .dynsym .dynstr 
.gnu.version .gnu.version_r .rela.dyn .rela.plt 
   01     .init .plt .plt.got .plt.sec .text .fini 
   02     .rodata .eh_frame_hdr .eh_frame 
   03     .init_array .fini_array .data.rel.ro .dynamic .got .got.plt .data 
.bss 
   04     .dynamic 
   05     .note.gnu.property 
   06     .note.gnu.build-id 
   07     .note.gnu.property 
   08     .eh_frame_hdr 
   09     
   10     .init_array .fini_array .data.rel.ro .dynamic .got 

On Tuesday, December 8, 2020 at 11:39:43 AM UTC-5 Matthew Kenigsberg wrote:

> My gdb is not the strongest but if I hbreak on arch_relocate_jump_slot 
> looks like _pathname is /libzfs.so, eventually /zpool.so, and then a single 
> /libzfs.so before continue hangs
>
> On Tuesday, December 8, 2020 at 9:11:15 AM UTC-7 Matthew Kenigsberg wrote:
>
>> Nix is a package manager, and NixOS is an operating system built 
>> completely around the package manager. So every library is stored somewhere 
>> in /nix/store, like for example on Nix there is never anything like 
>> /lib64/ld-linux-x86-64.so. 
>> It would be /nix/store/.../ld-linux-x86-64.so. I could install the package 
>> manager on a different OS, in which case I might have both /lib64 and 
>> /nix/store, but on NixOS I'll just have the latter. Does that make sense? 
>> Not 
>> sure if that's messing up something with linking. Guessing I can't 
>> reproduce the error on any other OS, but happy to try.
>> On Tuesday, December 8, 2020 at 9:05:11 AM UTC-7 Matthew Kenigsberg wrote:
>>
>>> (gdb) connect
>>> abort (fmt=fmt@entry=0x40645bf0 "Assertion failed: %s (%s: %s: %d)\n") 
>>> at runtime.cc:105
>>> 105 do {} while (true);
>>> (gdb) osv syms
>>> manifest.find_file: path=/libvdso.so, found file=libvdso.so
>>> /home/matthew/osv/build/release.x64/libvdso.so 0x100000000000
>>> add symbol table from file 
>>> "/home/matthew/osv/build/release.x64/libvdso.so" at
>>> .text_addr = 0x100000001040
>>> .hash_addr = 0x1000000001c8
>>> .gnu.hash_addr = 0x100000000200
>>> .dynsym_addr = 0x100000000238
>>> .dynstr_addr = 0x1000000002f8
>>> .gnu.version_addr = 0x1000000003be
>>> .gnu.version_d_addr = 0x1000000003d0
>>> .rela.plt_addr = 0x100000000408
>>> .plt_addr = 0x100000001000
>>> .eh_frame_addr = 0x100000002000
>>> .dynamic_addr = 0x100000003e60
>>> .got_addr = 0x100000003fd0
>>> .comment_addr = 0x100000000000
>>> .debug_aranges_addr = 0x100000000000
>>> .debug_info_addr = 0x100000000000
>>> .debug_abbrev_addr = 0x100000000000
>>> .debug_line_addr = 0x100000000000
>>> .debug_str_addr = 0x100000000000
>>> .debug_loc_addr = 0x100000000000
>>> .symtab_addr = 0x100000000000
>>> .strtab_addr = 0x100000000000
>>> warning: section .comment not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_aranges not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_info not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_abbrev not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_line not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_str not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .debug_loc not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .symtab not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> warning: section .strtab not found in 
>>> /home/matthew/osv/build/release.x64/libvdso.so
>>> manifest.find_file: path=/tools/mkfs.so, found file=tools/mkfs/mkfs.so
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so 0x100000004000
>>> add symbol table from file 
>>> "/home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so" at
>>> .text_addr = 0x100000006250
>>> .hash_addr = 0x100000004200
>>> .gnu.hash_addr = 0x100000004360
>>> .dynsym_addr = 0x1000000043c0
>>> .dynstr_addr = 0x100000004840
>>> .gnu.version_addr = 0x100000005092
>>> .gnu.version_r_addr = 0x1000000050f8
>>> .rela.dyn_addr = 0x100000005148
>>> .rela.plt_addr = 0x100000005298
>>> .init_addr = 0x100000006000
>>> .plt_addr = 0x100000006020
>>> .plt.got_addr = 0x100000006240
>>> .fini_addr = 0x10000000737c
>>> .rodata_addr = 0x100000008000
>>> .eh_frame_hdr_addr = 0x10000000817c
>>> .eh_frame_addr = 0x100000008210
>>> .gcc_except_table_addr = 0x100000008530
>>> .init_array_addr = 0x100000009c60
>>> .fini_array_addr = 0x100000009c70
>>> .dynamic_addr = 0x100000009c78
>>> .got_addr = 0x100000009e98
>>> .data_addr = 0x10000000a000
>>> .bss_addr = 0x10000000a010
>>> .comment_addr = 0x100000004000
>>> .debug_aranges_addr = 0x100000004000
>>> .debug_info_addr = 0x100000004000
>>> .debug_abbrev_addr = 0x100000004000
>>> --Type <RET> for more, q to quit, c to continue without paging--c
>>> .debug_line_addr = 0x100000004000
>>> .debug_str_addr = 0x100000004000
>>> .debug_loc_addr = 0x100000004000
>>> .debug_ranges_addr = 0x100000004000
>>> .symtab_addr = 0x100000004000
>>> .strtab_addr = 0x100000004000
>>> warning: section .comment not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_aranges not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_info not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_abbrev not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_line not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_str not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_loc not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .debug_ranges not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .symtab not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> warning: section .strtab not found in 
>>> /home/matthew/osv/build/release.x64/tools/mkfs/mkfs.so
>>> manifest.find_file: path=/libzfs.so, found file=libzfs.so
>>> /home/matthew/osv/build/release.x64/libzfs.so 0x10000000b000
>>> add symbol table from file 
>>> "/home/matthew/osv/build/release.x64/libzfs.so" at
>>> .text_addr = 0x1000000178f0
>>> .hash_addr = 0x10000000b200
>>> .gnu.hash_addr = 0x10000000c318
>>> .dynsym_addr = 0x10000000cd78
>>> .dynstr_addr = 0x100000010300
>>> .gnu.version_addr = 0x1000000124e2
>>> .gnu.version_r_addr = 0x100000012958
>>> .rela.dyn_addr = 0x1000000129b8
>>> .rela.plt_addr = 0x1000000134b0
>>> .init_addr = 0x100000016000
>>> .plt_addr = 0x100000016020
>>> .plt.got_addr = 0x1000000178e0
>>> .fini_addr = 0x1000000340a0
>>> .rodata_addr = 0x100000035000
>>> .eh_frame_hdr_addr = 0x100000039768
>>> .eh_frame_addr = 0x10000003a470
>>> .init_array_addr = 0x100000040010
>>> .fini_array_addr = 0x100000040018
>>> .data.rel.ro_addr = 0x100000040020
>>> .dynamic_addr = 0x1000000400e0
>>> .got_addr = 0x1000000402f0
>>> .data_addr = 0x100000041000
>>> .bss_addr = 0x100000041820
>>> .comment_addr = 0x10000000b000
>>> .debug_aranges_addr = 0x10000000b000
>>> .debug_info_addr = 0x10000000b000
>>> .debug_abbrev_addr = 0x10000000b000
>>> .debug_line_addr = 0x10000000b000
>>> .debug_str_addr = 0x10000000b000
>>> .debug_loc_addr = 0x10000000b000
>>> .debug_ranges_addr = 0x10000000b000
>>> .symtab_addr = 0x10000000b000
>>> .strtab_addr = 0x10000000b000
>>> warning: section .comment not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_aranges not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_info not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_abbrev not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_line not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_str not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_loc not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .debug_ranges not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .symtab not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> warning: section .strtab not found in 
>>> /home/matthew/osv/build/release.x64/libzfs.so
>>> manifest.find_file: path=/libuutil.so, found file=libuutil.so
>>> /home/matthew/osv/build/release.x64/libuutil.so 0x100000043000
>>> add symbol table from file 
>>> "/home/matthew/osv/build/release.x64/libuutil.so" at
>>> .text_addr = 0x1000000463c0
>>> .hash_addr = 0x100000043200
>>> .gnu.hash_addr = 0x100000043640
>>> .dynsym_addr = 0x1000000438f8
>>> .dynstr_addr = 0x100000044600
>>> .gnu.version_addr = 0x100000044da4
>>> .gnu.version_r_addr = 0x100000044ec0
>>> .rela.dyn_addr = 0x100000044f00
>>> .rela.plt_addr = 0x100000045068
>>> .init_addr = 0x100000046000
>>> .plt_addr = 0x100000046020
>>> .plt.got_addr = 0x1000000463b0
>>> .fini_addr = 0x100000049adc
>>> .rodata_addr = 0x10000004a000
>>> .eh_frame_hdr_addr = 0x10000004ac84
>>> .eh_frame_addr = 0x10000004af90
>>> .init_array_addr = 0x10000004dbd8
>>> .fini_array_addr = 0x10000004dbe0
>>> .dynamic_addr = 0x10000004dbe8
>>> .got_addr = 0x10000004dde8
>>> .data_addr = 0x10000004e000
>>> .bss_addr = 0x10000004e260
>>> .comment_addr = 0x100000043000
>>> .debug_aranges_addr = 0x100000043000
>>> .debug_info_addr = 0x100000043000
>>> .debug_abbrev_addr = 0x100000043000
>>> .debug_line_addr = 0x100000043000
>>> .debug_str_addr = 0x100000043000
>>> .debug_loc_addr = 0x100000043000
>>> .debug_ranges_addr = 0x100000043000
>>> .symtab_addr = 0x100000043000
>>> .strtab_addr = 0x100000043000
>>> warning: section .comment not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_aranges not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_info not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_abbrev not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_line not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_str not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_loc not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .debug_ranges not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .symtab not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> warning: section .strtab not found in 
>>> /home/matthew/osv/build/release.x64/libuutil.so
>>> manifest.find_file: path=/usr/lib/libgcc_s.so.1, found 
>>> file=%(libgcc_s_dir)s/libgcc_s.so.1
>>> ERROR: Unable to locate object file for: /usr/lib/libgcc_s.so.1 
>>> 0x10000004f000
>>> manifest.find_file: path=/zpool.so, found file=zpool.so
>>> /home/matthew/osv/build/release.x64/zpool.so 0x100000069000
>>> add symbol table from file 
>>> "/home/matthew/osv/build/release.x64/zpool.so" at
>>> .text_addr = 0x10000006ebc0
>>> .hash_addr = 0x100000069200
>>> .gnu.hash_addr = 0x100000069868
>>> .dynsym_addr = 0x100000069968
>>> .dynstr_addr = 0x10000006ad18
>>> .gnu.version_addr = 0x10000006b958
>>> .gnu.version_r_addr = 0x10000006bb00
>>> .rela.dyn_addr = 0x10000006bb30
>>> .rela.plt_addr = 0x10000006c208
>>> .init_addr = 0x10000006e000
>>> .plt_addr = 0x10000006e020
>>> .plt.got_addr = 0x10000006ebb0
>>> .fini_addr = 0x10000007a420
>>> .rodata_addr = 0x10000007b000
>>> .eh_frame_hdr_addr = 0x10000007fd30
>>> .eh_frame_addr = 0x100000080028
>>> .init_array_addr = 0x100000082758
>>> .fini_array_addr = 0x100000082760
>>> .dynamic_addr = 0x100000082768
>>> .got_addr = 0x100000082978
>>> .data_addr = 0x100000083000
>>> .bss_addr = 0x100000083360
>>> .comment_addr = 0x100000069000
>>> .debug_aranges_addr = 0x100000069000
>>> .debug_info_addr = 0x100000069000
>>> .debug_abbrev_addr = 0x100000069000
>>> .debug_line_addr = 0x100000069000
>>> .debug_str_addr = 0x100000069000
>>> .debug_loc_addr = 0x100000069000
>>> .debug_ranges_addr = 0x100000069000
>>> .symtab_addr = 0x100000069000
>>> .strtab_addr = 0x100000069000
>>> warning: section .comment not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_aranges not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_info not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_abbrev not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_line not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_str not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_loc not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .debug_ranges not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .symtab not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> warning: section .strtab not found in 
>>> /home/matthew/osv/build/release.x64/zpool.so
>>> (gdb) osv mmap
>>> 0x0000000000000000 0x0000000000000000 [0.0 kB] flags=none perm=none
>>> 0x0000100000000000 0x0000100000001000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/libvdso.so
>>> 0x0000100000001000 0x0000100000002000 [4.0 kB] flags=fmF perm=rx 
>>> offset=0x00001000 path=/libvdso.so
>>> 0x0000100000002000 0x0000100000003000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00002000 path=/libvdso.so
>>> 0x0000100000003000 0x0000100000004000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00002000 path=/libvdso.so
>>> 0x0000100000004000 0x0000100000006000 [8.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/tools/mkfs.so
>>> 0x0000100000006000 0x0000100000008000 [8.0 kB] flags=fmF perm=rx 
>>> offset=0x00002000 path=/tools/mkfs.so
>>> 0x0000100000008000 0x0000100000009000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00004000 path=/tools/mkfs.so
>>> 0x0000100000009000 0x000010000000a000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00004000 path=/tools/mkfs.so
>>> 0x000010000000a000 0x000010000000b000 [4.0 kB] flags=fmF perm=rw 
>>> offset=0x00005000 path=/tools/mkfs.so
>>> 0x000010000000b000 0x0000100000016000 [44.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/libzfs.so
>>> 0x0000100000016000 0x0000100000035000 [124.0 kB] flags=fmF perm=rx 
>>> offset=0x0000b000 path=/libzfs.so
>>> 0x0000100000035000 0x000010000003f000 [40.0 kB] flags=fmF perm=r 
>>> offset=0x0002a000 path=/libzfs.so
>>> 0x0000100000040000 0x0000100000041000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00034000 path=/libzfs.so
>>> 0x0000100000041000 0x0000100000042000 [4.0 kB] flags=fmF perm=rw 
>>> offset=0x00035000 path=/libzfs.so
>>> 0x0000100000042000 0x0000100000043000 [4.0 kB] flags=f perm=rw 
>>> 0x0000100000043000 0x0000100000046000 [12.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/libuutil.so
>>> 0x0000100000046000 0x000010000004a000 [16.0 kB] flags=fmF perm=rx 
>>> offset=0x00003000 path=/libuutil.so
>>> 0x000010000004a000 0x000010000004c000 [8.0 kB] flags=fmF perm=r 
>>> offset=0x00007000 path=/libuutil.so
>>> 0x000010000004d000 0x000010000004e000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00009000 path=/libuutil.so
>>> 0x000010000004e000 0x000010000004f000 [4.0 kB] flags=fmF perm=rw 
>>> offset=0x0000a000 path=/libuutil.so
>>> 0x000010000004f000 0x0000100000052000 [12.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/usr/lib/libgcc_s.so.1
>>> 0x0000100000052000 0x0000100000063000 [68.0 kB] flags=fmF perm=rx 
>>> offset=0x00003000 path=/usr/lib/libgcc_s.so.1
>>> 0x0000100000063000 0x0000100000067000 [16.0 kB] flags=fmF perm=r 
>>> offset=0x00014000 path=/usr/lib/libgcc_s.so.1
>>> 0x0000100000067000 0x0000100000068000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00017000 path=/usr/lib/libgcc_s.so.1
>>> 0x0000100000068000 0x0000100000069000 [4.0 kB] flags=fmF perm=rw 
>>> offset=0x00018000 path=/usr/lib/libgcc_s.so.1
>>> 0x0000100000069000 0x000010000006e000 [20.0 kB] flags=fmF perm=r 
>>> offset=0x00000000 path=/zpool.so
>>> 0x000010000006e000 0x000010000007b000 [52.0 kB] flags=fmF perm=rx 
>>> offset=0x00005000 path=/zpool.so
>>> 0x000010000007b000 0x0000100000082000 [28.0 kB] flags=fmF perm=r 
>>> offset=0x00012000 path=/zpool.so
>>> 0x0000100000082000 0x0000100000083000 [4.0 kB] flags=fmF perm=r 
>>> offset=0x00018000 path=/zpool.so
>>> 0x0000100000083000 0x0000100000084000 [4.0 kB] flags=fmF perm=rw 
>>> offset=0x00019000 path=/zpool.so
>>> 0x0000100000084000 0x0000100000086000 [8.0 kB] flags=f perm=rw 
>>> 0x0000200000000000 0x0000200000001000 [4.0 kB] flags=p perm=none
>>> 0x0000200000001000 0x0000200000002000 [4.0 kB] flags=p perm=none
>>> 0x0000200000002000 0x0000200000101000 [1020.0 kB] flags=p perm=rw 
>>> 0x0000200000101000 0x0000200000102000 [4.0 kB] flags=p perm=none
>>> 0x0000200000102000 0x0000200000201000 [1020.0 kB] flags=p perm=rw 
>>> 0x0000800000000000 0x0000800000000000 [0.0 kB] flags=none perm=none
>>> (gdb) bt
>>> #0 abort (fmt=fmt@entry=0x40645bf0 "Assertion failed: %s (%s: %s: 
>>> %d)\n") at runtime.cc:105
>>> #1 0x000000004023c75b in __assert_fail (expr=expr@entry=0x406742f8 
>>> "ef->rflags & processor::rflags_if", file=file@entry=0x40674325 
>>> "arch/x64/mmu.cc", line=line@entry=38, func=func@entry=0x4067431a 
>>> "page_fault") at runtime.cc:139
>>> #2 0x0000000040399305 in page_fault (ef=0xffff800000015048) at 
>>> arch/x64/arch-cpu.hh:107
>>> #3 <signal handler called>
>>> #4 0x000000004035ca19 in elf::object::symtab_len 
>>> (this=0xffffa00000f19a00) at core/elf.cc:983
>>> #5 0x000000004035cad8 in elf::object::lookup_addr 
>>> (this=0xffffa00000f19a00, addr=addr@entry=0x1000000254ce <is_mounted+30>) 
>>> at core/elf.cc:1015
>>> #6 0x000000004035cca7 in elf::program::<lambda(const 
>>> elf::program::modules_list&)>::operator() (__closure=<synthetic pointer>, 
>>> __closure=<synthetic pointer>, ml=...) at core/elf.cc:1620
>>> #7 elf::program::with_modules<elf::program::lookup_addr(void 
>>> const*)::<lambda(const elf::program::modules_list&)> > (f=..., 
>>> this=0xffffa00000097e70) at include/osv/elf.hh:702
>>> #8 elf::program::lookup_addr (this=0xffffa00000097e70, 
>>> addr=addr@entry=0x1000000254ce <is_mounted+30>) at core/elf.cc:1617
>>> #9 0x00000000404367cc in osv::lookup_name_demangled 
>>> (addr=addr@entry=0x1000000254ce <is_mounted+30>, 
>>> buf=buf@entry=0xffff8000012156d0 "???+19929103", len=len@entry=1024) at 
>>> core/demangle.cc:47
>>> #10 0x000000004023c540 in print_backtrace () at runtime.cc:85
>>> #11 0x000000004023c714 in abort (fmt=fmt@entry=0x40645aff "Aborted\n") 
>>> at runtime.cc:121
>>> #12 0x0000000040202989 in abort () at runtime.cc:98
>>> #13 0x0000000040345934 in mmu::vm_sigsegv (ef=0xffff800001216068, 
>>> addr=<optimized out>) at core/mmu.cc:1314
>>> #14 mmu::vm_sigsegv (addr=<optimized out>, ef=0xffff800001216068) at 
>>> core/mmu.cc:1308
>>> #15 0x000000004034782f in mmu::vm_fault (addr=addr@entry=17592186309800, 
>>> ef=ef@entry=0xffff800001216068) at core/mmu.cc:1328
>>> #16 0x00000000403992a3 in page_fault (ef=0xffff800001216068) at 
>>> arch/x64/mmu.cc:42
>>> #17 <signal handler called>
>>> #18 0x000000004039c95a in elf::object::arch_relocate_jump_slot 
>>> (this=this@entry=0xffffa00000f19a00, sym=..., 
>>> addr=addr@entry=0x100000040ca8 <[email protected]>, addend=addend@entry=0) 
>>> at arch/x64/arch-elf.cc:172
>>> #19 0x0000000040361004 in elf::object::resolve_pltgot 
>>> (this=0xffffa00000f19a00, index=<optimized out>) at core/elf.cc:843
>>> #20 0x0000000040361229 in elf_resolve_pltgot (index=308, 
>>> obj=0xffffa00000f19a00) at core/elf.cc:1860
>>> #21 0x0000000040397d50 in __elf_resolve_pltgot () at arch/x64/elf-dl.S:47
>>> #22 0x00001000000254cf in is_mounted (zfs_hdl=0x134, special=<optimized 
>>> out>, where=0x403f3377 <malloc(size_t)+71>) at 
>>> bsd/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c:214
>>> #23 0xffff900000a99000 in ?? ()
>>> #24 0x0000000000000000 in ?? ()
>>>
>>> On Tuesday, December 8, 2020 at 8:53:52 AM UTC-7 [email protected] 
>>> wrote:
>>>
>>>> It would be also nice to understand if we are crashing on the 1st 
>>>> arch_relocate_jump_slot() for libfzs.so or is it a specific JUMP_SLOT that 
>>>> causes this crash? 
>>>>
>>>> On Tuesday, December 8, 2020 at 10:39:06 AM UTC-5 Waldek Kozaczuk wrote:
>>>>
>>>>> After you connect with gdb can you run 'osv mmap' and send us the 
>>>>> output. Make sure you run 'osv syms' before it and dump backtrace after. 
>>>>> Please see https://github.com/cloudius-systems/osv/wiki/Debugging-OSv 
>>>>> for any details.
>>>>>
>>>>> BTW can you build and run OSv ZFS image on the host without NIX? As I 
>>>>> understand NIX is really just a layer on top of any Linux distribution, 
>>>>> no? 
>>>>> I am afraid I do not still understand what exactly NiX is I guess.
>>>>>
>>>>>
>>>>> On Monday, December 7, 2020 at 2:58:40 PM UTC-5 Matthew Kenigsberg 
>>>>> wrote:
>>>>>
>>>>>> (gdb) frame 18
>>>>>> #18 0x000000004039c95a in elf::object::arch_relocate_jump_slot 
>>>>>> (this=this@entry=0xffffa0000110fa00, sym=..., 
>>>>>>     addr=addr@entry=0x100000040ca8, addend=addend@entry=0) at 
>>>>>> arch/x64/arch-elf.cc:172
>>>>>> 172            *static_cast<void**>(addr) = sym.relocated_addr();
>>>>>> (gdb) print _pathname
>>>>>> $14 = {static npos = 18446744073709551615, 
>>>>>>   _M_dataplus = {<std::allocator<char>> = 
>>>>>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data 
>>>>>> fields>}, 
>>>>>>     _M_p = 0xffffa0000110fa30 "/libzfs.so"}, _M_string_length = 10, {
>>>>>>     _M_local_buf = "/libzfs.so\000\000\000\000\000", 
>>>>>> _M_allocated_capacity = 3347131623889529903}}
>>>>>>
>>>>>> Also been wondering if nix using nonstandard paths is causing 
>>>>>> problems, like for libc:
>>>>>> [nix-shell:~/osv/build/release]$ ldd libzfs.so 
>>>>>>     linux-vdso.so.1 (0x00007ffcedbb9000)
>>>>>>     libuutil.so => not found
>>>>>>     libc.so.6 => 
>>>>>> /nix/store/9df65igwjmf2wbw0gbrrgair6piqjgmi-glibc-2.31/lib/libc.so.6 
>>>>>> (0x00007f7594f38000)
>>>>>>    
>>>>>>  
>>>>>> /nix/store/9df65igwjmf2wbw0gbrrgair6piqjgmi-glibc-2.31/lib64/ld-linux-x86-64.so.2
>>>>>>  
>>>>>> (0x00007f7595131000)
>>>>>> On Sunday, December 6, 2020 at 8:43:10 AM UTC-7 [email protected] 
>>>>>> wrote:
>>>>>>
>>>>>>> It might be easier to simply print '_pathname' value if you switch 
>>>>>>> to the right frame in gdb. It would be nice to confirm that the problem 
>>>>>>> we 
>>>>>>> have is with zpool.so and that might lead to understanding why this 
>>>>>>> crash 
>>>>>>> happens. Maybe the is something wrong with building zpool.so.
>>>>>>>
>>>>>>> BTW based on this fragment of the stacktrace:
>>>>>>>
>>>>>>> #6  0x000000004035cb07 in elf::program::<lambda(const 
>>>>>>> elf::program::modules_list&)>::operator() (
>>>>>>>     __closure=<synthetic pointer>, __closure=<synthetic pointer>, 
>>>>>>> ml=...) at core/elf.cc:1620
>>>>>>> #7  elf::program::with_modules<elf::program::lookup_addr(void 
>>>>>>> const*)::<lambda(const elf::program::modules_list&)> >
>>>>>>>     (f=..., this=0xffffa00000097e70) at include/osv/elf.hh:702
>>>>>>> #8  elf::program::lookup_addr (this=0xffffa00000097e70, 
>>>>>>> addr=addr@entry=0x1000000254ce) at core/elf.cc:1617
>>>>>>> #9  0x00000000404357cc in osv::lookup_name_demangled 
>>>>>>> (addr=addr@entry=0x1000000254ce,
>>>>>>>     buf=buf@entry=0xffff8000012146d0 "???+19630095", 
>>>>>>> len=len@entry=1024) at core/demangle.cc:47
>>>>>>> #10 0x000000004023c4e0 in print_backtrace () at runtime.cc:85
>>>>>>>
>>>>>>> It seems we have a bug (or need of improvement) in print_backtrace() 
>>>>>>> to make it NOT try to demangle names like "???+19630095" which causes 
>>>>>>> follow-up fault.
>>>>>>>
>>>>>>> At the same time, it is strange that we crash at line 983 which 
>>>>>>> seems to indicate something goes wrong when processing zpool.so.
>>>>>>>
>>>>>>>  981     if (dynamic_exists(DT_HASH)) {
>>>>>>>
>>>>>>>  982         auto hashtab = dynamic_ptr<Elf64_Word>(DT_HASH);
>>>>>>>
>>>>>>>  *983         return hashtab[1];*
>>>>>>>
>>>>>>>  984     }
>>>>>>>
>>>>>>> On Sunday, December 6, 2020 at 10:06:21 AM UTC-5 Waldek Kozaczuk 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Can you run the ROFS image you built? Also as I understand it NIX 
>>>>>>>> is a package manager but what Linux distribution are you using?
>>>>>>>>
>>>>>>>> As far as ZFS goes could you enable ELF debugging - change this 
>>>>>>>> line:
>>>>>>>>
>>>>>>>> conf-debug_elf=0
>>>>>>>>
>>>>>>>> To
>>>>>>>>
>>>>>>>> conf-debug_elf=1
>>>>>>>>
>>>>>>>> In conf/base.mk, delete core/elf.o and force rebuild the kernel. I 
>>>>>>>> think you may also need to change the script upload_manifest.py to 
>>>>>>>> peeped 
>>>>>>>> ‘—verbose’ to the command line with cpiod.so
>>>>>>>>
>>>>>>>> It should show more info about elf loading. It may still be 
>>>>>>>> necessary to add extra printouts to capture which exact elf it is 
>>>>>>>> crashing 
>>>>>>>> on in arch_relocate_jump(). 
>>>>>>>>
>>>>>>>> In worst case I would need a copy of your loader-stripped.elf and 
>>>>>>>> possibly all the other files like cpiod.so, zfs.so that go into the 
>>>>>>>> bootfs 
>>>>>>>> part of the image. 
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Waldek
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Dec 5, 2020 at 19:31 Matthew Kenigsberg <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> After forcing it to use the right path for libz.so.1, it's working 
>>>>>>>>> with rofs, but still having the same issue when using zfs, even after 
>>>>>>>>> I 
>>>>>>>>> correct the path for libz.
>>>>>>>>>
>>>>>>>>> On Saturday, December 5, 2020 at 5:18:37 PM UTC-7 Matthew 
>>>>>>>>> Kenigsberg wrote:
>>>>>>>>>
>>>>>>>>>> gcc version 9.3.0 (GCC)
>>>>>>>>>> QEMU emulator version 5.1.0
>>>>>>>>>>
>>>>>>>>>> Running with fs=rofs I get the error:
>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 369, in 
>>>>>>>>>> <module>
>>>>>>>>>>     main()
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 366, in 
>>>>>>>>>> main
>>>>>>>>>>     gen_image(outfile, manifest)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 269, in 
>>>>>>>>>> gen_image
>>>>>>>>>>     system_structure_block, bytes_written = write_fs(fp, manifest)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 246, in 
>>>>>>>>>> write_fs
>>>>>>>>>>     count, directory_entries_index = write_dir(fp, 
>>>>>>>>>> manifest.get(''), '', manifest)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 207, in 
>>>>>>>>>> write_dir
>>>>>>>>>>     count, directory_entries_index = write_dir(fp, val, dirpath + 
>>>>>>>>>> '/' + entry, manifest)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 207, in 
>>>>>>>>>> write_dir
>>>>>>>>>>     count, directory_entries_index = write_dir(fp, val, dirpath + 
>>>>>>>>>> '/' + entry, manifest)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 222, in 
>>>>>>>>>> write_dir
>>>>>>>>>>     inode.count = write_file(fp, val)
>>>>>>>>>>   File "/home/matthew/osv/scripts/gen-rofs-img.py", line 164, in 
>>>>>>>>>> write_file
>>>>>>>>>>     with open(path, 'rb') as f:
>>>>>>>>>> FileNotFoundError: [Errno 2] No such file or directory: 
>>>>>>>>>> 'libz.so.1'
>>>>>>>>>>
>>>>>>>>>> I think that's from this line in usr.manifest?
>>>>>>>>>> /usr/lib/libz.so.1: libz.so.1
>>>>>>>>>>
>>>>>>>>>> Don't have zlib in the manifest without fs=rofs, and I think 
>>>>>>>>>> zpool uses it?
>>>>>>>>>>
>>>>>>>>>> Looking into it...
>>>>>>>>>> On Saturday, December 5, 2020 at 4:36:20 PM UTC-7 
>>>>>>>>>> [email protected] wrote:
>>>>>>>>>>
>>>>>>>>>>> I can not reproduce it on Ubuntu 20.20 neither Fedora 33. Here 
>>>>>>>>>>> is the code fragment where it happens:
>>>>>>>>>>>
>>>>>>>>>>> 169 bool object::arch_relocate_jump_slot(symbol_module& sym, 
>>>>>>>>>>> void *addr, Elf64_Sxword addend)
>>>>>>>>>>>
>>>>>>>>>>> 170 {
>>>>>>>>>>>
>>>>>>>>>>> 171     if (sym.symbol) {
>>>>>>>>>>>
>>>>>>>>>>> 172         *static_cast<void**>(addr) = sym.relocated_addr();
>>>>>>>>>>>
>>>>>>>>>>> 173         return true;
>>>>>>>>>>>
>>>>>>>>>>> 174     } else {
>>>>>>>>>>>
>>>>>>>>>>> 175         return false;
>>>>>>>>>>>
>>>>>>>>>>> 176     }
>>>>>>>>>>>
>>>>>>>>>>> 177 }
>>>>>>>>>>> It looks like writing at the addr 0x100000040ca8 in line 172 
>>>>>>>>>>> caused the fault. Why?
>>>>>>>>>>>
>>>>>>>>>>> And then the 2nd page fault in the gdb backtrace as the 1st one 
>>>>>>>>>>> was being handled (not sure if that is a bug or just a state of 
>>>>>>>>>>> loading of 
>>>>>>>>>>> a program).
>>>>>>>>>>>
>>>>>>>>>>> 981     if (dynamic_exists(DT_HASH)) {
>>>>>>>>>>>
>>>>>>>>>>>  982         auto hashtab = dynamic_ptr<Elf64_Word>(DT_HASH);
>>>>>>>>>>>
>>>>>>>>>>>  983         return hashtab[1];
>>>>>>>>>>>
>>>>>>>>>>>  984     }
>>>>>>>>>>> Is something wrong with the elf files cpiod.so, mkfs.so or 
>>>>>>>>>>> zfs.so or something?
>>>>>>>>>>>
>>>>>>>>>>> Can you try to do the same with ROFS?
>>>>>>>>>>>
>>>>>>>>>>> fs=rofs
>>>>>>>>>>> On Saturday, December 5, 2020 at 5:44:12 PM UTC-5 Matthew 
>>>>>>>>>>> Kenigsberg wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Struggling to get scripts/build to run on NixOS because I'm 
>>>>>>>>>>>> getting a page fault. NixOS does keep shared libraries in 
>>>>>>>>>>>> nonstandard 
>>>>>>>>>>>> locations, not sure if that's breaking something. More details 
>>>>>>>>>>>> below, but 
>>>>>>>>>>>> any ideas?
>>>>>>>>>>>>
>>>>>>>>>>>> As far as I can tell, the error is caused by 
>>>>>>>>>>>> tools/mkfs/mkfs.cc:71:
>>>>>>>>>>>>     run_cmd("/zpool.so", zpool_args);
>>>>>>>>>>>>
>>>>>>>>>>>> The error from scripts/build:
>>>>>>>>>>>>
>>>>>>>>>>>> OSv v0.55.0-145-g97f17a7a
>>>>>>>>>>>> eth0: 192.168.122.15
>>>>>>>>>>>> Booted up in 154.38 ms
>>>>>>>>>>>> Cmdline: /tools/mkfs.so; /tools/cpiod.so --prefix /zfs/zfs/; 
>>>>>>>>>>>> /zfs.so set compression=off osv
>>>>>>>>>>>> Running mkfs...
>>>>>>>>>>>> page fault outside application, addr: 0x0000100000040ca8
>>>>>>>>>>>> [registers]
>>>>>>>>>>>> RIP: 0x000000004039c25a 
>>>>>>>>>>>> <elf::object::arch_relocate_jump_slot(elf::symbol_module&, void*, 
>>>>>>>>>>>> long)+26>
>>>>>>>>>>>> RFL: 0x0000000000010202  CS:  0x0000000000000008  SS:  
>>>>>>>>>>>> 0x0000000000000010
>>>>>>>>>>>> RAX: 0x000010000007a340  RBX: 0x0000100000040ca8  RCX: 
>>>>>>>>>>>> 0x000010000006abb0  RDX: 0x0000000000000002
>>>>>>>>>>>> RSI: 0x00002000001f6f70  RDI: 0xffffa00001058c00  RBP: 
>>>>>>>>>>>> 0x00002000001f6f30  R8:  0xffffa00000a68460
>>>>>>>>>>>> R9:  0xffffa00000f18da0  R10: 0x0000000000000000  R11: 
>>>>>>>>>>>> 0x00000000409dd380  R12: 0xffffa00000f18c00
>>>>>>>>>>>> R13: 0xffffa00000f18da0  R14: 0x0000000000000000  R15: 
>>>>>>>>>>>> 0x00000000409dd380  RSP: 0x00002000001f6f20
>>>>>>>>>>>> Aborted
>>>>>>>>>>>>
>>>>>>>>>>>> [backtrace]
>>>>>>>>>>>> 0x00000000403458d3 <???+1077172435>
>>>>>>>>>>>> 0x00000000403477ce <mmu::vm_fault(unsigned long, 
>>>>>>>>>>>> exception_frame*)+350>
>>>>>>>>>>>> 0x0000000040398ba2 <page_fault+162>
>>>>>>>>>>>> 0x0000000040397a16 <???+1077508630>
>>>>>>>>>>>> 0x0000000040360a13 <elf::object::resolve_pltgot(unsigned 
>>>>>>>>>>>> int)+387>
>>>>>>>>>>>> 0x0000000040360c38 <elf_resolve_pltgot+56>
>>>>>>>>>>>> 0x000000004039764f <???+1077507663>
>>>>>>>>>>>> 0xffffa000012b880f <???+19630095>
>>>>>>>>>>>>
>>>>>>>>>>>> Trying to get a backtrace after connecting with gdb:
>>>>>>>>>>>> (gdb) bt
>>>>>>>>>>>> #0  abort (fmt=fmt@entry=0x40644b90 "Assertion failed: %s (%s: 
>>>>>>>>>>>> %s: %d)\n") at runtime.cc:105
>>>>>>>>>>>> #1  0x000000004023c6fb in __assert_fail 
>>>>>>>>>>>> (expr=expr@entry=0x40672cf8 "ef->rflags & processor::rflags_if", 
>>>>>>>>>>>>     file=file@entry=0x40672d25 "arch/x64/mmu.cc", 
>>>>>>>>>>>> line=line@entry=38, func=func@entry=0x40672d1a "page_fault")
>>>>>>>>>>>>     at runtime.cc:139
>>>>>>>>>>>> #2  0x0000000040398c05 in page_fault (ef=0xffff800000015048) at 
>>>>>>>>>>>> arch/x64/arch-cpu.hh:107
>>>>>>>>>>>> #3  <signal handler called>
>>>>>>>>>>>> #4  0x000000004035c879 in elf::object::symtab_len 
>>>>>>>>>>>> (this=0xffffa00000f18c00) at core/elf.cc:983
>>>>>>>>>>>> #5  0x000000004035c938 in elf::object::lookup_addr 
>>>>>>>>>>>> (this=0xffffa00000f18c00, addr=addr@entry=0x1000000254ce)
>>>>>>>>>>>>     at core/elf.cc:1015
>>>>>>>>>>>> #6  0x000000004035cb07 in elf::program::<lambda(const 
>>>>>>>>>>>> elf::program::modules_list&)>::operator() (
>>>>>>>>>>>>     __closure=<synthetic pointer>, __closure=<synthetic 
>>>>>>>>>>>> pointer>, ml=...) at core/elf.cc:1620
>>>>>>>>>>>> #7  elf::program::with_modules<elf::program::lookup_addr(void 
>>>>>>>>>>>> const*)::<lambda(const elf::program::modules_list&)> >
>>>>>>>>>>>>     (f=..., this=0xffffa00000097e70) at include/osv/elf.hh:702
>>>>>>>>>>>> #8  elf::program::lookup_addr (this=0xffffa00000097e70, 
>>>>>>>>>>>> addr=addr@entry=0x1000000254ce) at core/elf.cc:1617
>>>>>>>>>>>> #9  0x00000000404357cc in osv::lookup_name_demangled 
>>>>>>>>>>>> (addr=addr@entry=0x1000000254ce, 
>>>>>>>>>>>>     buf=buf@entry=0xffff8000012146d0 "???+19630095", 
>>>>>>>>>>>> len=len@entry=1024) at core/demangle.cc:47
>>>>>>>>>>>> #10 0x000000004023c4e0 in print_backtrace () at runtime.cc:85
>>>>>>>>>>>> #11 0x000000004023c6b4 in abort (fmt=fmt@entry=0x40644a9f 
>>>>>>>>>>>> "Aborted\n") at runtime.cc:121
>>>>>>>>>>>> #12 0x0000000040202989 in abort () at runtime.cc:98
>>>>>>>>>>>> #13 0x00000000403458d4 in mmu::vm_sigsegv 
>>>>>>>>>>>> (ef=0xffff800001215068, addr=<optimized out>) at core/mmu.cc:1314
>>>>>>>>>>>> #14 mmu::vm_sigsegv (addr=<optimized out>, 
>>>>>>>>>>>> ef=0xffff800001215068) at core/mmu.cc:1308
>>>>>>>>>>>> #15 0x00000000403477cf in mmu::vm_fault 
>>>>>>>>>>>> (addr=addr@entry=17592186309800, ef=ef@entry=0xffff800001215068)
>>>>>>>>>>>>     at core/mmu.cc:1328
>>>>>>>>>>>> #16 0x0000000040398ba3 in page_fault (ef=0xffff800001215068) at 
>>>>>>>>>>>> arch/x64/mmu.cc:42
>>>>>>>>>>>> #17 <signal handler called>
>>>>>>>>>>>> #18 0x000000004039c25a in elf::object::arch_relocate_jump_slot 
>>>>>>>>>>>> (this=this@entry=0xffffa00000f18c00, sym=..., 
>>>>>>>>>>>>     addr=addr@entry=0x100000040ca8, addend=addend@entry=0) at 
>>>>>>>>>>>> arch/x64/arch-elf.cc:172
>>>>>>>>>>>> #19 0x0000000040360a14 in elf::object::resolve_pltgot 
>>>>>>>>>>>> (this=0xffffa00000f18c00, index=<optimized out>)
>>>>>>>>>>>>     at core/elf.cc:843
>>>>>>>>>>>> #20 0x0000000040360c39 in elf_resolve_pltgot (index=308, 
>>>>>>>>>>>> obj=0xffffa00000f18c00) at core/elf.cc:1860
>>>>>>>>>>>> #21 0x0000000040397650 in __elf_resolve_pltgot () at 
>>>>>>>>>>>> arch/x64/elf-dl.S:47
>>>>>>>>>>>> #22 0x00001000000254cf in ?? ()
>>>>>>>>>>>> #23 0xffffa000012b8800 in ?? ()
>>>>>>>>>>>> #24 0x00002000001f74a0 in ?? ()
>>>>>>>>>>>> #25 0x00001000000254cf in ?? ()
>>>>>>>>>>>> #26 0x00002000001f7480 in ?? ()
>>>>>>>>>>>> #27 0x00000000403f241c in calloc (nmemb=<optimized out>, 
>>>>>>>>>>>> size=<optimized out>) at core/mempool.cc:1811
>>>>>>>>>>>> #28 0xffff900000a98000 in ?? ()
>>>>>>>>>>>> #29 0x0000000000000000 in ?? ()
>>>>>>>>>>>> On Saturday, November 28, 2020 at 1:39:46 PM UTC-7 Matthew 
>>>>>>>>>>>> Kenigsberg wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'll send something, might take a bit before I find time to 
>>>>>>>>>>>>> work on it though.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Matthew
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Saturday, November 28, 2020 at 1:11:11 PM UTC-7 Roman 
>>>>>>>>>>>>> Shaposhnik wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Nov 24, 2020 at 8:03 AM Waldek Kozaczuk <
>>>>>>>>>>>>>> [email protected]> wrote: 
>>>>>>>>>>>>>> > 
>>>>>>>>>>>>>> > Hey, 
>>>>>>>>>>>>>> > 
>>>>>>>>>>>>>> > Send a patch with a new app that could demonstrate it, 
>>>>>>>>>>>>>> please, if you can. I would like to see it. Sounds like a nice 
>>>>>>>>>>>>>> improvement. 
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> FWIW: I'd love to see it too -- been meaning to play with Nix 
>>>>>>>>>>>>>> and this 
>>>>>>>>>>>>>> gives me a perfect excuse ;-) 
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks, 
>>>>>>>>>>>>>> Roman. 
>>>>>>>>>>>>>>
>>>>>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to a topic in 
>>>>>>>>> the Google Groups "OSv Development" group.
>>>>>>>>> To unsubscribe from this topic, visit 
>>>>>>>>> https://groups.google.com/d/topic/osv-dev/rhjHPr7OBEw/unsubscribe.
>>>>>>>>> To unsubscribe from this group and all its topics, send an email 
>>>>>>>>> to [email protected].
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/osv-dev/7913b79b-6c06-4f2a-95d3-9dc44e45eb45n%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/osv-dev/7913b79b-6c06-4f2a-95d3-9dc44e45eb45n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/53640cd6-80e6-4451-b020-3c40dd046be1n%40googlegroups.com.

Reply via email to