Skip to content

bug(iggy-server) - panics at startup on Intel macOS: thread pool limit cfg excludes only aarch64 #3993

Description

@djanand

Bug description

Bug description

iggy-server panics immediately at startup on Intel macOS (x86_64) and never binds a listener. The build succeeds; the failure is at runtime. The guard in core/server_common/src/executor.rs:87 applies thread_pool_limit(0)` on every target except macOS aarch64

#[cfg(not(all(target_os = "macos", target_arch = "aarch64")))]
proactor.thread_pool_limit(0);

On macOS x86_64 the condition is therefore true and the zero limit is applied. compio's polling driver (used on macOS, since there is no io_uring) routes fs operations through the blocking pool, so the first fs operation panics.

The comment directly above that line describes the exclusion as applying to macOS generally, with no architecture qualifier

Expected: server starts on Intel macOS.
Actual: panics before binding any listener.

Why CI did not catch it

The only macOS Rust job is build-macos-aarch64 on macos-14 (.github/workflows/_test.yml:44). macos-15-intel appears only in _build_python_wheels.yml. Intel macOS has no Rust build or test coverage.

Affected area / component

  • Iggy server

Deployment

Compiled from source

Versions

server 0.9.0-edge.6 (commit 996ac04, master)

Affected area / component

Iggy server

Deployment

Compiled from source

Versions

0.9.0 (commit 996ac04, master)

Hardware / environment

Local Intel Mac, macOS 15.7.4, x86_64, APFS/SSD. rustc 1.98.0 (88d9e12ae 2026-08-18)

Sample code

No response

Logs

thread 'main' (3217100) panicked at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/asyncify.rs:118:25:
the thread pool is needed but no worker thread is running
stack backtrace:
0: __rustc::rust_begin_unwind
at /rustc/88d9e12ae178fab0fb5cc050a94da85685d449ea/library/std/src/panicking.rs:679:5
1: core::panicking::panic_fmt
at /rustc/88d9e12ae178fab0fb5cc050a94da85685d449ea/library/core/src/panicking.rs:80:14
2: <compio_driver::asyncify::AsyncifyPool>::dispatch::<<compio_driver::sys::driver::poll::Driver>::push_blocking::{closure#0}>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/asyncify.rs:118:25
3: <compio_driver::sys::driver::poll::Driver>::push_blocking
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/sys/driver/poll/mod.rs:388:38
4: <compio_driver::sys::driver::poll::Driver>::push
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/sys/driver/poll/mod.rs:320:22
5: <compio_driver::Proactor>::push_with_extra::<compio_driver::sys::op::fs::poll::PathStat<compio_driver::sys::pal::unix::CurrentDir>>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/lib.rs:266:27
6: <compio_driver::Proactor>::push::<compio_driver::sys::op::fs::poll::PathStat<compio_driver::sys::pal::unix::CurrentDir>>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-driver-0.12.4/src/lib.rs:255:14
7: compio_runtime::future::submit_raw::<compio_driver::sys::op::fs::poll::PathStat<compio_driver::sys::pal::unix::CurrentDir>>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-runtime-0.12.3/src/future/mod.rs:51:24
8: <compio_runtime::future::future::Submit<compio_driver::sys::op::fs::poll::PathStat<compio_driver::sys::pal::unix::CurrentDir>> as core::future::future::Future>::poll
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-runtime-0.12.3/src/future/future.rs:147:33
9: compio_fs::metadata::sys::metadata_impl::<compio_driver::sys::pal::unix::CurrentDir, &std::path::Path>::{closure#0}
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-fs-0.12.0/src/metadata/unix.rs:29:57
10: compio_fs::metadata::sys::metadata::<&std::path::Path>::{closure#0}
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-fs-0.12.0/src/metadata/unix.rs:34:43
11: compio_fs::metadata::metadata::<&std::path::Path>::{closure#0}
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-fs-0.12.0/src/metadata/mod.rs:17:25
12: server_common::bootstrap::walk_dir::<&alloc::string::String>::{closure#0}
at ./core/server_common/src/bootstrap.rs:126:47
13: server_common::bootstrap::remove_dir_all::<&alloc::string::String>::{closure#0}
at ./core/server_common/src/bootstrap.rs:160:33
14: server_common::bootstrap::create_directories::<alloc::sync::Arc<configs::common::system::SystemConfigconfigs::server_config::sharding::ShardingConfig>>::{closure#0}
at ./core/server_common/src/bootstrap.rs:99:75
15: server::bootstrap::prepare_runtime_dirs::{closure#0}
at ./core/server/src/bootstrap.rs:595:40
16: iggy_server::main::{closure#0}
at ./core/server/src/main.rs:77:65
17: <compio_runtime::Runtime>::block_on::<iggy_server::main::{closure#0}>::{closure#0}
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-runtime-0.12.3/src/lib.rs:178:62
18: <scoped_tls::ScopedKey<compio_runtime::Runtime>>::set::<<compio_runtime::Runtime>::block_on<iggy_server::main::{closure#0}>::{closure#0}, core::result::Result<configs::server_config::server::ServerConfig, server::server_error::ServerError>>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/scoped-tls-1.0.1/src/lib.rs:137:9
19: <compio_runtime::Runtime>::enter::<core::result::Result<configs::server_config::server::ServerConfig, server::server_error::ServerError>, <compio_runtime::Runtime>::block_on<iggy_server::main::{closure#0}>::{closure#0}>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-runtime-0.12.3/src/lib.rs:152:25
20: <compio_runtime::Runtime>::block_on::<iggy_server::main::{closure#0}>
at /Users/jogeshanand/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/compio-runtime-0.12.3/src/lib.rs:173:14
21: iggy_server::main
at ./core/server/src/main.rs:75:81
22: <fn() -> core::result::Result<(), server::server_error::ServerError> as core::ops::function::FnOnce<()>>::call_once
at /Users/jogeshanand/.rustup/toolchains/1.98.0-x86_64-apple-darwin/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

Iggy server config

Stock core/server/config.toml, no overrides, no IGGY_* env vars beyond the
--with-default-root-credentials flag.

Reproduction

  1. On an Intel Mac (x86_64), cargo build --bin iggy-server (succeeds)
  2. cargo run --bin iggy-server -- --with-default-root-credentials
  3. Panics before binding; no listener on 3000/8080/8090/8092.

Contribution

  • I'm willing to submit a pull request to fix this bug

Good first issue

  • I think this could be a good first issue for a new contributor

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinggood first issueGood for newcomersserveriggy-server related change

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions