Hi,
sigrok segfaults with my Brymen BM869s DMM.
It happens when I use sigrok-cli to scan.
And also when trying to get measurement without correct udev rules
(device permissions).
For the purpose of debugging, I have installed the software in the
following way:
cd libusb-1.0.19/
CC=clang CFLAGS="-g -ggdb -O0 -fPIC" ./configure
--prefix=$HOME/playground/sigrok/install
--libdir=$HOME/playground/sigrok/install/usr/lib --enable-shared
--disable-static
make -j4
make install
cd ..
cd libsigrok-0.3.0
PKG_CONFIG_PATH="$HOME/playground/sigrok/install/usr/lib/pkgconfig:$PKG_CONFIG_PATH"
CC=clang CFLAGS="-g -ggdb -O0 -fPIC" ./configure
--prefix=$HOME/playground/sigrok/install
--libdir=$HOME/playground/sigrok/install/usr/lib --enable-shared
--disable-static
make -j4
make install
cd ..
cd sigrok-cli-0.5.0
PKG_CONFIG_PATH="$HOME/playground/sigrok/install/usr/lib/pkgconfig:$PKG_CONFIG_PATH"
CC=clang CFLAGS="-g -ggdb -O0 -fPIC" ./configure
--prefix=$HOME/playground/sigrok/install
--libdir=$HOME/playground/sigrok/install/usr/lib --enable-shared
--disable-static
make -j4
make install
And this is what happens:
*Without* the DMM connected and *with* correct udev rules:
./sigrok-cli --scan
The following devices were found:
demo - Demo device with 12 channels: D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3
*With* the DMM connected and *with* correct udev rules:
./sigrok-cli --scan
The following devices were found:
brymen-bm86x - Brymen BM869 with 2 channels: P1 P2
demo - Demo device with 12 channels: D0 D1 D2 D3 D4 D5 D6 D7 A0 A1 A2 A3
Segmentation fault
*With* the DMM connected and *with* correct udev rules:
./sigrok-cli --driver brymen-bm86x --samples 3 --output-format analog
P1: -0.002110 V DC REL
P1: -0.002110 V DC REL
P1: -0.002120 V DC REL
*With* the DMM connected and *without* correct udev rules:
./sigrok-cli --driver brymen-bm86x --samples 3 --output-format analog
sr: usb: Failed to open device: LIBUSB_ERROR_ACCESS.
Segmentation fault
In the case of "./sigrok-cli --scan" the call stack looks like that:
0 pthread_mutex_lock 0x7fb5bd7edf44
1 libusb_release_interface core.c 1512 0x7fb5bc8d23c7
2 dev_close api.c 158 0x7fb5be456216
3 std_dev_clear std.c 266 0x7fb5be43203c
4 cleanup api.c 182 0x7fb5be455a8a
5 sr_hw_cleanup_all hwdriver.c 549 0x7fb5be42f317
6 sr_exit backend.c 388 0x7fb5be42ad4a
7 main main.c 286 0x404436
In the line 1512 of core.c of libusb, in function call:
usbi_mutex_lock(&dev->lock);
the 'dev' pointer is NULL.
In the case of "./sigrok-cli --driver brymen-bm86x --samples 3
--output-format analog" without correct udev rules, the call stack looks
like that:
0 libusb_kernel_driver_active core.c 1711 0x7fa31cace889
1 dev_open api.c 125 0x7fa31e6520c4
2 sr_dev_open device.c 504 0x7fa31e6278fd
3 run_session session.c 477 0x407ff0
4 main main.c 270 0x404393
In the line 1711 of core.c of libusb, in the condition:
if (!dev->dev->attached)
return LIBUSB_ERROR_NO_DEVICE;
the 'dev' pointer is NULL.
Any clues on what might be happening?
--
Best regards,
Andrzej Telszewski
------------------------------------------------------------------------------
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel