Skip to content

Conversation

@ELDiablO59152
Copy link
Contributor

Fixed

  • [POUDRIERE-DEVEL] The custom HBSD patch has been updated to fix an error during the build

hardenedbsd-services pushed a commit that referenced this pull request Apr 29, 2024
* thread #1, name = 'xdg-desktop-port', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
    frame #0: 0x000000000026acf0 xdg-desktop-portal-hyprland`dmabufFeedbackMainDevice(data=0x0000000000000000, feedback=0x0000182398a105c0, device_arr=0x0000182398a891d0) at PortalManager.cpp:90:5
   87   static void dmabufFeedbackMainDevice(void* data, zwp_linux_dmabuf_feedback_v1* feedback, wl_array* device_arr) {
   88       Debug::log(LOG, "[core] dmabufFeedbackMainDevice");
   89
-> 90       RASSERT(!g_pPortalManager->m_sWaylandConnection.gbm, "double dmabuf feedback");
   91
   92       dev_t device;
   93       assert(device_arr->size == sizeof(device));
(lldb) bt
* thread #1, name = 'xdg-desktop-port', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
  * frame #0: 0x000000000026acf0 xdg-desktop-portal-hyprland`dmabufFeedbackMainDevice(data=0x0000000000000000, feedback=0x0000182398a105c0, device_arr=0x0000182398a891d0) at PortalManager.cpp:90:5
    frame #1: 0x000000082c61067a libffi.so.8`ffi_call_unix64 at unix64.S:104
    frame #2: 0x000000082c60f8f9 libffi.so.8`ffi_call_int(cif=0x0000000820fbba80, fn=(xdg-desktop-portal-hyprland`dmabufFeedbackMainDevice(void*, zwp_linux_dmabuf_feedback_v1*, wl_array*) at PortalManager.cpp:87), rvalue=0x0000000000000000, avalue=0x0000000820fbbab0, closure=0x0000000000000000) at ffi64.c:673:3
    frame #3: 0x000000082c60f452 libffi.so.8`ffi_call(cif=0x0000000820fbba80, fn=(xdg-desktop-portal-hyprland`dmabufFeedbackMainDevice(void*, zwp_linux_dmabuf_feedback_v1*, wl_array*) at PortalManager.cpp:87), rvalue=0x0000000000000000, avalue=0x0000000820fbbab0) at ffi64.c:710:3
    frame #4: 0x00000008242fac28 libwayland-client.so.0`wl_closure_invoke(closure=0x0000182398a89100, flags=1, target=0x0000182398a105c0, opcode=2, data=0x0000000000000000) at connection.c:1025:2
    frame #5: 0x00000008242f84cf libwayland-client.so.0`dispatch_event(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1631:3
    frame #6: 0x00000008242f72f4 libwayland-client.so.0`dispatch_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1777:3
    frame #7: 0x00000008242f70bd libwayland-client.so.0`wl_display_dispatch_queue_pending(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:2019:8
    frame #8: 0x00000008242f6c8e libwayland-client.so.0`wl_display_dispatch_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1995:9
    frame #9: 0x00000008242f6814 libwayland-client.so.0`wl_display_roundtrip_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1403:9
    frame #10: 0x00000008242f6ce0 libwayland-client.so.0`wl_display_roundtrip(display=0x0000182398a1b140) at wayland-client.c:1432:9
    frame #11: 0x0000000000326718 xdg-desktop-portal-hyprland`CToplevelManager::activate(this=0x0000182398a19240) at ToplevelManager.cpp:109:5
    frame #12: 0x0000000000267b72 xdg-desktop-portal-hyprland`CPortalManager::onGlobal(this=0x0000182398a1b000, data=0x0000000000000000, registry=0x0000182398a10440, name=24, interface="zwlr_foreign_toplevel_manager_v1", version=3) at PortalManager.cpp:261:34
    frame #13: 0x00000000002675e5 xdg-desktop-portal-hyprland`handleGlobal(data=0x0000000000000000, registry=0x0000182398a10440, name=24, interface="zwlr_foreign_toplevel_manager_v1", version=3) at PortalManager.cpp:20:23
    frame #14: 0x000000082c61067a libffi.so.8`ffi_call_unix64 at unix64.S:104
    frame #15: 0x000000082c60f8f9 libffi.so.8`ffi_call_int(cif=0x0000000820fbc140, fn=(xdg-desktop-portal-hyprland`handleGlobal(void*, wl_registry*, unsigned int, char const*, unsigned int) at PortalManager.cpp:19), rvalue=0x0000000000000000, avalue=0x0000000820fbc170, closure=0x0000000000000000) at ffi64.c:673:3
    frame #16: 0x000000082c60f452 libffi.so.8`ffi_call(cif=0x0000000820fbc140, fn=(xdg-desktop-portal-hyprland`handleGlobal(void*, wl_registry*, unsigned int, char const*, unsigned int) at PortalManager.cpp:19), rvalue=0x0000000000000000, avalue=0x0000000820fbc170) at ffi64.c:710:3
    frame #17: 0x00000008242fac28 libwayland-client.so.0`wl_closure_invoke(closure=0x0000182398a1b8c0, flags=1, target=0x0000182398a10440, opcode=0, data=0x0000000000000000) at connection.c:1025:2
    frame #18: 0x00000008242f84cf libwayland-client.so.0`dispatch_event(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1631:3
    frame #19: 0x00000008242f72f4 libwayland-client.so.0`dispatch_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1777:3
    frame #20: 0x00000008242f70bd libwayland-client.so.0`wl_display_dispatch_queue_pending(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:2019:8
    frame #21: 0x00000008242f6c8e libwayland-client.so.0`wl_display_dispatch_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1995:9
    frame #22: 0x00000008242f6814 libwayland-client.so.0`wl_display_roundtrip_queue(display=0x0000182398a1b140, queue=0x0000182398a1b230) at wayland-client.c:1403:9
    frame #23: 0x00000008242f6ce0 libwayland-client.so.0`wl_display_roundtrip(display=0x0000182398a1b140) at wayland-client.c:1432:9
    frame #24: 0x00000000002689a4 xdg-desktop-portal-hyprland`CPortalManager::init(this=0x0000182398a1b000) at PortalManager.cpp:312:5
    frame #25: 0x00000000002a3f76 xdg-desktop-portal-hyprland`main(argc=1, argv=0x0000000820fbc870, envp=0x0000000820fbc880) at main.cpp:38:23
    frame #26: 0x000000082a0172aa libc.so.7`__libc_start1(argc=1, argv=0x0000000820fbc870, env=0x0000000820fbc880, cleanup=<unavailable>, mainX=(xdg-desktop-portal-hyprland`main at main.cpp:15)) at libc_start1.c:157:7
    frame #27: 0x0000000000267520 xdg-desktop-portal-hyprland`_start at crt1_s.S:83

* thread #1, name = 'xdg-desktop-port', stop reason = signal SIGILL: privileged opcode
    frame #0: 0x0000000824c5f7cf libc++.so.1`std::__1::mutex::unlock(this=<unavailable>) at mutex.cpp:39:3
   36   void mutex::unlock() noexcept {
   37     int ec = __libcpp_mutex_unlock(&__m_);
   38     (void)ec;
-> 39     _LIBCPP_ASSERT_VALID_EXTERNAL_API_CALL(
   40         ec == 0, "call to mutex::unlock failed. A possible reason is that the mutex wasn't locked");
   41   }
   42
(lldb) bt
* thread #1, name = 'xdg-desktop-port', stop reason = signal SIGILL: privileged opcode
  * frame #0: 0x0000000824c5f7cf libc++.so.1`std::__1::mutex::unlock(this=<unavailable>) at mutex.cpp:39:3
    frame #1: 0x00000000002691d3 xdg-desktop-portal-hyprland`CPortalManager::startEventLoop(this=0x000021aa1001b000) at PortalManager.cpp:424:48
    frame #2: 0x0000000000268f06 xdg-desktop-portal-hyprland`CPortalManager::init(this=0x000021aa1001b000) at PortalManager.cpp:335:5
    frame #3: 0x00000000002a3f56 xdg-desktop-portal-hyprland`main(argc=1, argv=0x0000000820d386c8, envp=0x0000000820d386d8) at main.cpp:38:23
    frame #4: 0x00000008274222aa libc.so.7`__libc_start1(argc=1, argv=0x0000000820d386c8, env=0x0000000820d386d8, cleanup=<unavailable>, mainX=(xdg-desktop-portal-hyprland`main at main.cpp:15)) at libc_start1.c:157:7
    frame #5: 0x0000000000267520 xdg-desktop-portal-hyprland`_start at crt1_s.S:83
(lldb) f 1
frame #1: 0x00000000002691d3 xdg-desktop-portal-hyprland`CPortalManager::startEventLoop(this=0x000021aa1001b000) at PortalManager.cpp:424:48
   421
   422      while (1) { // dbus events
   423          // wait for being awakened
-> 424          m_sEventLoopInternals.loopRequestMutex.unlock(); // unlock, we are ready to take events
   425
   426          std::unique_lock lk(m_sEventLoopInternals.loopMutex);
   427          if (m_sEventLoopInternals.shouldProcess == false) // avoid a lock if a thread managed to request something already since we .unlock()ed

PR:		278496
Reported by:	shurd
hardenedbsd-services pushed a commit that referenced this pull request May 3, 2025
Bundle xbyak like emulators/citra as dynarmic upstream is gone.

$ yuzu
<select game>
Abort trap
(lldb) bt
* thread #22, name = 'CPUCore_0', stop reason = signal SIGABRT
  * frame #0: 0x0000000840e0b27a libc.so.7`__sys_thr_kill at thr_kill.S:4
    frame #1: 0x0000000840d85284 libc.so.7`__raise(s=6) at raise.c:50:10
    frame #2: 0x0000000840e35009 libc.so.7`abort at abort.c:65:8
    frame #3: 0x000000083e6dfc07 libcxxrt.so.1`report_failure(err=<unavailable>, thrown_exception=0x000013e856697280) at exception.cc:734:5
    frame #4: 0x0000000002e6bfd1 yuzu`Xbyak::CodeGenerator::opMR(this=0x000013e85af00b10, addr=0x000013ea4f1fe718, r=0x000013ea4f1feb38, type=0, code=136, type2=0, code2=136) at xbyak.h:2100:109
    frame #5: 0x0000000002e71d11 yuzu`Xbyak::CodeGenerator::opRO(this=0x000013e85af00b10, r=0x000013ea4f1feb38, op=0x000013ea4f1feb40, type=0, code=136, condR=false, immSize=0) at xbyak.h:2312:4
    frame #6: 0x0000000002e72047 yuzu`Xbyak::CodeGenerator::opRO_MR(this=0x000013e85af00b10, op1=0x000013ea4f1feb40, op2=0x000013ea4f1feb38, code=136) at xbyak.h:2339:4
    frame #7: 0x0000000002e67193 yuzu`Xbyak::CodeGenerator::mov(this=0x000013e85af00b10, op1=0x000013ea4f1feb40, op2=0x000013ea4f1feb38) at xbyak.h:3038:4
    frame #8: 0x0000000002f0b3fe yuzu`Dynarmic::Backend::X64::RegAlloc::EmitMove(this=0x000013ea4f1ff500, bit_width=64, to=FirstSpill, from=RAX) at reg_alloc.cpp:748:18
    frame #9: 0x0000000002f09074 yuzu`Dynarmic::Backend::X64::RegAlloc::Move(this=0x000013ea4f1ff500, to=FirstSpill, from=RAX) at reg_alloc.cpp:610:5
    frame #10: 0x0000000002f0bc80 yuzu`Dynarmic::Backend::X64::RegAlloc::SpillRegister(this=0x000013ea4f1ff500, loc=RAX) at reg_alloc.cpp:654:5
    frame #11: 0x0000000002f08f8f yuzu`Dynarmic::Backend::X64::RegAlloc::MoveOutOfTheWay(this=0x000013ea4f1ff500, reg=RAX) at reg_alloc.cpp:644:9
    frame #12: 0x0000000002f086b0 yuzu`Dynarmic::Backend::X64::RegAlloc::ScratchImpl(this=0x000013ea4f1ff500, desired_locations=size=1) at reg_alloc.cpp:428:5
    frame #13: 0x0000000002f0872d yuzu`Dynarmic::Backend::X64::RegAlloc::ScratchGpr(this=0x000013ea4f1ff500, desired_location=RAX) at reg_alloc.cpp:356:27
    frame #14: 0x0000000002f68a08 yuzu`Dynarmic::Backend::X64::DoNZCV(code=0x000013e85af00b10, reg_alloc=0x000013ea4f1ff500, nzcv_out=0x000013e856611d10) at emit_x64_data_processing.cpp:914:41
    frame #15: 0x0000000002f63b48 yuzu`Dynarmic::Backend::X64::EmitSub(code=0x000013e85af00b10, ctx=0x000013ea4f1ff488, inst=0x000013e856611ca8, bitsize=64) at emit_x64_data_processing.cpp:1027:31
    frame #16: 0x0000000002f641be yuzu`Dynarmic::Backend::X64::EmitX64::EmitSub64(this=0x000013e85af01968, ctx=0x000013ea4f1ff488, inst=0x000013e856611ca8) at emit_x64_data_processing.cpp:1106:5
    frame #17: 0x0000000003542e24 yuzu`Dynarmic::Backend::X64::A64EmitX64::Emit(this=0x000013e85af01968, block=0x000013ea4f1ff730) at opcodes.inc:131:1
    frame #18: 0x000000000353e209 yuzu`Dynarmic::A64::Jit::Impl::GetBlock(this=0x000013e85af006c0, current_location=(value = 2147483656)) at a64_interface.cpp:290:24
    frame #19: 0x000000000353de9a yuzu`Dynarmic::A64::Jit::Impl::GetCurrentBlock(this=0x000013e85af006c0) at a64_interface.cpp:252:16
    frame #20: 0x000000000354057d yuzu`Dynarmic::A64::Jit::Impl::GetCurrentBlockThunk(thisptr=0x000013e85af006c0) at a64_interface.cpp:244:23

Regressed by:	herumi/xbyak@54173384271f
Reported by:	SDK Chan
hardenedbsd-services pushed a commit that referenced this pull request Aug 22, 2025
Issue from bug 284623: several PANIC errors in log.smbd, similar to:

  [2025/02/02 16:56:09.823293,	0] ../../lib/util/fault.c:193(smb_panic_log)
    PANIC (pid 8625): async open timeout in 4.20.7
  [2025/02/02 16:56:09.827129,	0] ../../lib/util/fault.c:304(log_stack_trace)
    BACKTRACE: 20 stack frames:
     #0 0x3645750f6ec7 <log_stack_trace+0x37> at /usr/local/lib/samba4/private/libgenrand-private-samba.so
     #1 0x3645750f6f9e <smb_panic+0xe> at /usr/local/lib/samba4/private/libgenrand-private-samba.so
     #2 0x36456b707b24 <smbd_exit_server+0x1b4> at /usr/local/lib/samba4/private/libsmbd-base-private-samba.so
     #3 0x36456b707981 <smbd_exit_server+0x11> at /usr/local/lib/samba4/private/libsmbd-base-private-samba.so
     #4 0x364575394bcc <exit_server+0x1c> at /usr/local/lib/samba4/private/libsmbd-shim-private-samba.so
     #5 0x36456b6b2b10 <delete_all_streams> at /usr/local/lib/samba4/private/libsmbd-base-private-samba.so
     #6 0x364575935dff <tevent_common_invoke_timer_handler+0x18f> at /usr/local/lib/libtevent.so.0
     #7 0x364575935fa4 <tevent_common_loop_timer_delay+0x94> at /usr/local/lib/libtevent.so.0
     #8 0x3645759337c5 <tevent_context_same_loop+0xb15> at /usr/local/lib/libtevent.so.0
     #9 0x36457592f36a <_tevent_loop_once+0xea> at /usr/local/lib/libtevent.so.0
     #10 0x36457592f5f2 <tevent_common_loop_wait+0x32> at /usr/local/lib/libtevent.so.0
     #11 0x36456b6cd34b <smbd_process+0x83b> at /usr/local/lib/samba4/private/libsmbd-base-private-samba.so
     #12 0x363d4788f9bd <main+0x42fd> at /usr/local/sbin/smbd
     #13 0x36457593067e <tevent_common_invoke_fd_handler+0x9e> at /usr/local/lib/libtevent.so.0
     #14 0x364575933a44 <tevent_context_same_loop+0xd94> at /usr/local/lib/libtevent.so.0
     #15 0x36457592f36a <_tevent_loop_once+0xea> at /usr/local/lib/libtevent.so.0
     #16 0x36457592f5f2 <tevent_common_loop_wait+0x32> at /usr/local/lib/libtevent.so.0
     #17 0x363d4788df3f <main+0x287f> at /usr/local/sbin/smbd
     #18 0x363d4788cbac <main+0x14ec> at /usr/local/sbin/smbd
     #19 0x36457742ac3a <__libc_start1+0x12a> at /lib/libc.so.7

Issue from bug 286821: accessing Samba shares from macOS clients results
in error dialogs titled: "There was a problem connecting to the server",
with content "The share does not exist on the server. Please check the
share name and then try again".

The problems are caused by fdescfs handling:
* patch 0028-s3-lib-system-add-FreeBSD-proc_fd_pattern.patch was how
  Timur solved the fd problem for Samba 4.19 (mounting fdescfs nodup
  under /var/run/samba4/fd);
* if only this had been accepted upstream, we would not have had this
  problem in 4.20... :(
* in any case this code is now unused in 4.20, where Samba went even
  more Linux-only;
* patch 0101-FreeBSD-add-fdescfs-paths-workaround.patch was a naive
  tentative to solve the same problem for 4.20, apparently without
  taking into account what had been done before; it's broken by design,
  brokenly implementated and it simply doesn't work.

Apply a patch by Andrea Venturoli <[email protected]>, which drops the 0101
patch, and modifies the older 0028 patch to revive what Timur had done.

PR:		284623, 286821
Tested by:	O. Hartmann <[email protected]> and others
Approved by:	samba (0mp)
MFH:		2025Q3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant