Skip to content

rust driver_manager: initializing the driver creates some dangling resources which hangs application during shutdown #3840

@Pranav2612000

Description

@Pranav2612000

What happened?

Here's a sample test

  #[test]
  fn test_driver_setup() {
    const SNOWFLAKE_DRIVER_NAME: &str = "snowflake";
    let mut driver = ManagedDriver::load_from_name(
      SNOWFLAKE_DRIVER_NAME,
      None,
      AdbcVersion::default(),
      LOAD_FLAG_DEFAULT,
      None,
    )
    .unwrap();
    println!("Driver loaded");
  }

Here's the output on running the test

    Finished `test` profile [unoptimized + debuginfo] target(s) in 11.79s
     Running unittests src/lib.rs (target/debug/deps/<redacted>)

running 1 test
Driver loaded









As you see, the test never completes. Debugging further, I've pinpointed the issue to the ADBC FFI init function ( FFI_AdbcDriverInitFunc ) ( here )

On the same machine, the following code works as expected, with a clean shutdown

Stack Trace

How can we reproduce the bug?

Sample test case shared above

Environment/Setup

rust version -> rustc 1.86.0 (05f9846f8 2025-03-31)

Cargo.toml dependencies

adbc_core = "0.21.0"
adbc_driver_manager = "0.21.0"
arrow = { version = "57.0.0", features = ["prettyprint"] }
arrow-array = "57.0.0"
async-trait = "0.1.89"
dhat = { version = "0.3.3", optional = true }
tikv-jemallocator = "0.6.0"
tokio = { version = "1.45.1", features = ["full", "test-util"] }
tokio-executor = "0.1.10"
tokio-executor-trait = "2.1.1"
tokio-reactor-trait = "2.0.0"
tokio-retry = "0.3.0"
tokio-stream = "0.1.16"

build.rs contains script to generate gRPC code and linking for GPU stuff

Snowflake driver downloaded using dbc

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions