Bug 1608

Summary: Segfault when re-running an acquisition on a session w/ Rigol MSO5072 oscilloscope with LA (PLA2216)
Product: PulseView Reporter: brainstorm <brainstorm>
Component: OtherAssignee: Nobody <nobody>
Status: CONFIRMED ---    
Severity: normal CC: soeren, tvafltvsio
Priority: Normal    
Version: unreleased development snapshot   
Target Milestone: ---   
Hardware: x86   
OS: Mac OS X   
Attachments: Segfault reported on OSX Catalina
pulseview ran from console with level 5 debug as instructed
pulseview ran from console with level 5 debug as instructed: body of segfault reported by OSX

Description brainstorm 2020-09-15 14:08:37 CEST
Created attachment 676 [details]
Segfault reported on OSX Catalina

Cannot reproduce easily, but I really was just re-running an acquisition :-S
Comment 1 Soeren Apel 2020-09-15 14:31:23 CEST
Hello, this is most likely a driver bug. Please run PV from a console with "pulseview -l 5" and when this happens again, copy the most recent console output (~100 lines) to a text file and attach it here.

Even better would be https://sigrok.org/wiki/Developers#GDB_Backtraces_for_PulseView
Comment 2 brainstorm 2020-09-15 14:41:17 CEST
Created attachment 681 [details]
pulseview ran from console with level 5 debug as instructed
Comment 3 brainstorm 2020-09-15 14:44:03 CEST
Created attachment 682 [details]
pulseview ran from console with level 5 debug as instructed: body of segfault reported by OSX

Now I can totally reproduce it: Just re-running the acquisition after a first run triggers this segfault.

I downloaded the nightly release from sigrok.org **today**, about 1 hour ago (just so you have a reference build where this is happening).
Comment 4 brainstorm 2020-09-20 08:59:36 CEST
Today I got this backtrace:

sr: scpi_usbtmc: USBTMC invalid bulk in header.
sr: scpi_usbtmc: USBTMC invalid bulk in header.
sr: session: Could not start rigol-ds device usbtmc/20.22 acquisition.
sr: session: Cannot remove non-existing event source 0x7f80e26c6bb0.
Notifying user of session error: "generic/unspecified error"
2020-09-20 16:57:43.444 pulseview[1604:18740886] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSWindow drag regions should only be invalidated on the Main Thread!'
*** First throw call stack:
	0   CoreFoundation                      0x00007fff2f772be7 __exceptionPreprocess + 250
	1   libobjc.A.dylib                     0x00007fff6854a5bf objc_exception_throw + 48
	2   CoreFoundation                      0x00007fff2f79b3dc -[NSException raise] + 9
	3   AppKit                              0x00007fff2c999ddc -[NSWindow(NSWindow_Theme) _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 310
	4   AppKit                              0x00007fff2c981842 -[NSWindow _initContent:styleMask:backing:defer:contentView:] + 1416
	5   AppKit                              0x00007fff2cb625a5 -[NSPanel _initContent:styleMask:backing:defer:contentView:] + 50
	6   AppKit                              0x00007fff2c9812b3 -[NSWindow initWithContentRect:styleMask:backing:defer:] + 42
	7   AppKit                              0x00007fff2cb6255a -[NSPanel initWithContentRect:styleMask:backing:defer:] + 64
	8   AppKit                              0x00007fff2ccba1e8 -[NSWindow initWithContentRect:styleMask:backing:defer:screen:] + 52
	9   libqcocoa.dylib                     0x00000001088353d5 qt_plugin_instance + 181653
	10  libqcocoa.dylib                     0x0000000108821d3d qt_plugin_instance + 102141
	11  libqcocoa.dylib                     0x000000010881b866 qt_plugin_instance + 76326
	12  libqcocoa.dylib                     0x000000010881b340 qt_plugin_instance + 75008
	13  QtGui                               0x0000000106dae7e2 _ZN14QWindowPrivate6createEby + 146
	14  QtWidgets                           0x00000001067ed703 _ZN14QWidgetPrivate6createEv + 1187
	15  QtWidgets                           0x00000001067ec358 _ZN7QWidget6createEybb + 328
	16  QtWidgets                           0x00000001067fed8c _ZN14QWidgetPrivate10setVisibleEb + 428
	17  QtWidgets                           0x00000001069c5662 _ZN7QDialog10setVisibleEb + 258
	18  QtWidgets                           0x00000001069c4ed3 _ZN7QDialog4execEv + 243
	19  pulseview                           0x00000001058379fd _ZN2pv10MainWindow18show_session_errorE7QStringS1_ + 333
	20  pulseview                           0x000000010583d69a _ZNSt3__110__function6__funcIZN2pv10MainWindow19on_run_stop_clickedEvE3$_1NS_9allocatorIS4_EEFv7QStringEEclEOS7_ + 74
	21  pulseview                           0x000000010584b8ae _ZN2pv7Session18sample_thread_procENSt3__18functionIFv7QStringEEE + 1950
	22  pulseview                           0x0000000105850298 _ZNSt3__114__thread_proxyINS_5tupleIJNS_10unique_ptrINS_15__thread_structENS_14default_deleteIS3_EEEEMN2pv7SessionEFvNS_8functionIFv7QStringEEEEPS8_SC_EEEEEPvSH_ + 152
	23  libsystem_pthread.dylib             0x00007fff698f6109 _pthread_start + 148
	24  libsystem_pthread.dylib             0x00007fff698f1b8b thread_start + 15
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
Comment 5 Soeren Apel 2020-10-16 23:46:10 CEST
Wanted to re-visit this bug and realized I forgot to ask the version of PV you're running. Can you please give it?

I fixed segfaults in this very class (LogicSegment) about 10 days before you filed this bug, so it could be that you may have used a version that doesn't contain these fixes yet.

With that, it may also make sense to re-test with a current nightly.
Comment 6 brainstorm 2020-10-18 10:28:38 CEST

I'm running PV 0.5.0-git-4788af1 (that's from 17th September 2020, I'll give it a go w/ nightly now...). I figured out a way to reliably trigger this:

1) Open PulseView.
2) Let it detect or select rigol-ds via USB.
3) Do an adquisition, do work, etc...
4) Power cycle the oscilloscope.
5) Click Run (acquire) on the still running PV instance.

Following those steps it crashes reliably for me. Comparing commits from 17th September up to HEAD, it doesn't seem that the USBTMC part is touched in any way, so I suspect this might trigger again?:


I'll compile HEAD and try to reproduce in any case ;)
Comment 7 brainstorm 2020-10-18 10:43:59 CEST
Indeed, it crashes on HEAD (nightly) as well:

sr: scpi_usbtmc: USBTMC bulk out transfer error: LIBUSB_ERROR_NO_DEVICE.
sr: session: Could not start rigol-ds device usbtmc/20.23 acquisition.
sr: session: Cannot remove non-existing event source 0x7fbe1b4aabb0.

I guess that forcing a re-enumeration of the USB connected devices on the event sources right before acquiring might prevent this crash?... or actually catching that exception somehow and recovering by re-enumerating and defaulting to "no source" (error message?) if nothing is found?
Comment 8 Rock12 2023-08-09 07:43:39 CEST
"I just got my new mattress topper from MattressTopperBuddy and my sleep has never been better!" https://mattresstopperbuddy.com/best-mattress-topper-for-back-pain-side-sleepers/