Visitar URL original
SIGABRT (SI_TKILL) in pacquet-main thread on pnpm 12.14.0 during 'pnpm exec tauri build' · Issue #17204 · pnpm/pnpm · GitHub
Skip to content

SIGABRT (SI_TKILL) in pacquet-main thread on pnpm 12.14.0 during 'pnpm exec tauri build' #17204

Closed

Description

@marktantongco

Bug Report: SIGABRT in pacquet-main thread on pnpm 12.14.0

Environment

  • pnpm version: 12.14.0-1 (Arch Linux package)
  • Previous working version: 11.3.0-1
  • OS: Arch Linux (Omarchy)
  • Node.js: 22.x (system)
  • Command: pnpm exec tauri build --ignore-version-mismatches

Crash Details

  • Signal: SIGABRT (si_code: SI_TKILL - explicit thread kill via tkill syscall)
  • Crashing thread: pacquet-main (pnpm's package fetcher)
  • Total threads: 30 (others idle in epoll_wait / worker pool)
  • Memory: No OOM pressure (15Gi total, 5.3Gi available)
  • Pattern: Recurring crash - 2x in 12 minutes (PIDs 1993776 and 2009797)

Core Dumps

  1. /var/lib/systemd/coredump/core.pnpm.1000.0fa71a8e950049168c7ef0b024fb50e0.1993776.1792596827000000.zst (23:33:47)
  2. /var/lib/systemd/coredump/core.pnpm.1000.0fa71a8e950049168c7ef0b024fb50e0.2009797.1792597500000000.zst (23:45:00)

GDB Analysis

  • pnpm binary is stripped (no debug symbols)
  • debuginfod downloads failing for libc/sqlite3
  • Stack trace shows raise() → abort() path with 8 frames in pnpm's stripped code
  • Thread 1 (pacquet-main) crashed; other threads in syscall/epoll_wait

Root Cause Hypothesis

The SI_TKILL signal code indicates pnpm explicitly aborted itself, likely due to an internal error detection (assertion failure, panic, or unhandled exception in Node.js/pacquet code). The crash correlates with the pnpm upgrade from 11.3.0 → 12.14.0 on 2026-10-20.

Workaround

Downgrading to pnpm 11.3.0 (pnpm add -g pnpm@11.3.0) allows the Tauri build to complete successfully.

Reproduction Steps

  1. Install pnpm 12.14.0
  2. Create a Tauri v2 project (or use any Tauri app)
  3. Run pnpm exec tauri build --ignore-version-mismatches
  4. Observe SIGABRT in pacquet-main thread

Additional Context

  • Not an Omarchy/Arch packaging issue - upstream pnpm/pacquet bug
  • The --ignore-version-mismatches flag is used for Tauri CLI version compatibility
  • This affects Tauri app builds specifically (may be related to how Tauri invokes pnpm for frontend bundling)

Request

Please investigate the pacquet-main thread crash in pnpm 12.14.0. The core dumps are available for analysis if debug symbols can be provided.

Activity

  1. github-actions commented on Oct 21, 2026

    @github-actions
    Contributor

    @marktantongco, are you planning to open a pull request for this? If so, reply here and a maintainer will assign the issue to you, so nobody else starts on the same fix.

  2. zkochan commented on Oct 21, 2026

    @zkochan
    Member

    Opened #17214 to fix this completely.

    What happened in your stack trace

    Disassembling the Arch Linux pnpm 12.14.0-1 binary (Build ID: f72e42f09888d483fcb097eaf32c4e7e95622f72) at your PIE base (0x55eb0ae7e000) resolves the 8 /usr/bin/pnpm frames on pacquet-main to:

    Frame Address Offset Function
    #4 0x55eb0cc940c8 0x1e160c8 pnpm_fs::pending_temp::die_from_signal(6) (raise(SIGABRT))
    #5 0x55eb0cc81275 0x1e03275 pnpm_executor::interrupt::exit_like
    #6 0x55eb0bf01535 0x1083535 pnpm::commands::exec::ExecArgs::run
    #7 0x55eb0c435a86 0x15b7a86 pnpm::commands::run::execute_script_command
    #8–#11 0x55eb0b8eaa8a… 0xa6ca8a… Tokio block_on / pacquet-main thread entry

    pnpm itself did not crash during the build. Instead, the child tauri process aborted with SIGABRT (signal 6), and pnpm exec called exit_like -> die_from_signal(SIGABRT) to re-raise the child's termination signal on pnpm so the parent shell receives the same exit status. Because die_from_signal did not suppress core dumps before calling raise(SIGABRT) (SI_TKILL), Linux's do_coredump invoked systemd-coredump for /usr/bin/pnpm as well.

    Fix in #17214

    pnpm_fs::die_from_signal now sets RLIMIT_CORE to 0 and (on Linux/Android, where do_coredump ignores RLIMIT_CORE when kernel.core_pattern pipes to systemd-coredump) clears PR_SET_DUMPABLE via prctl(PR_SET_DUMPABLE, 0, ...) before re-raising the signal. pnpm still exits with the same signal (WTERMSIG(status) == SIGABRT), without generating a bogus core dump for /usr/bin/pnpm.

    Note on the underlying tauri build abort in 68proxy

    In 68proxy (src-tauri/Cargo.toml pulls in tauri with tray-icon -> libappindicator), cargo build --release succeeds without libayatana-appindicator installed because libappindicator-sys loads the .so via dlopen rather than linking it at compile time, and then @tauri-apps/cli-linux-x64-gnu panics on a worker thread during the post-compile bundling step (crates/tauri-cli/src/interface/rust.rs:1722:17: Can't detect any appindicator library), aborting the node (tauri) process with SIGABRT. Installing libayatana-appindicator on Arch/Omarchy (sudo pacman -S libayatana-appindicator) resolves the tauri abort.

    Written by an agent (Antigravity, claude-opus-4-7).

  3. added a commit that references this issue on Oct 21, 2026
    e2cc154
  4. added a commit that references this issue on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions