Skip to content

Crash when calling ma_context_get_device_info while there's a loaded module-remap-source module #1103

@asapha

Description

@asapha

Repro

  • Load the module (They're removed after a restart)
    • pactl load-module module-null-sink sink_name=audiorelay-virtual-mic-sink sink_properties=device.description=Virtual-Mic-Sink
    • pactl load-module module-remap-source master=audiorelay-virtual-mic-sink.monitor source_name=audiorelay-virtual-mic-sink source_properties=device.description=Virtual-Mic
  • Run a program calling ma_context_get_device_info

For example, set this in simple_enumeration.c

  printf("Capture Devices\n");
  for (iDevice = 0; iDevice < captureDeviceCount; ++iDevice)
  {
      ma_device_info info = pCaptureDeviceInfos[iDevice];
      ma_context_get_device_info(&context, ma_device_type_capture, &info.id, &info);
      printf("    %u: %s\n", iDevice, info.name);
  }

Result

Program received signal SIGSEGV, Segmentation fault.
0x0000555555566d47 in ma_context_get_device_info_source_callback__pulse (pPulseContext=0x555555652ed0, pInfo=0x0, endOfList=-1, pUserData=0x7fffffffd280) at [...]
31598	    if (pInfo->name != NULL) {
The target architecture is set to "auto" (currently "i386:x86-64").
ma_context_get_device_info_source_callback__pulse miniaudio.h:31598
ma_wait_for_operation__pulse miniaudio.h:31143
ma_wait_for_operation_and_unref__pulse miniaudio.h:31160
ma_context_get_device_info__pulse miniaudio.h:31651
ma_context_get_device_info miniaudio.h:43578
main simple_enumeration.c:51

If you call run the program again after restarting pulseaudio (via systemctl --user restart pipewire-pulse.service) , it will no longer crash.

Info
Tested with 0.11.25
It doesn't occur with dev-0.12

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.4 LTS
Release:        24.04
Codename:       noble

pipewire --version
pipewire
Compiled with libpipewire 1.0.5
Linked with libpipewire 1.0.5

pactl --version
pactl 16.1
Compiled with libpulse 16.1.0
Linked with libpulse 16.1.0

By the way, are you interested in bug reports for dev-0.12? The pipewire enumeration crashes on my end and, I think I'm getting late (or missed) capture callbacks on other backends.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions