Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bandpass fails to stop every now and then #10

Open
luarvique opened this issue Jun 22, 2024 · 0 comments
Open

Bandpass fails to stop every now and then #10

luarvique opened this issue Jun 22, 2024 · 0 comments

Comments

@luarvique
Copy link

On very rare occassions, OpenWebRX fails to show connecting user the waterfall, while the background services continue running. The analysis of the situation with GDB has shown the following:

  1. SDR source fails to start for the user because of modificationLock taken by a previous attempt to stop this same SDR source.

  2. The previous SDR stop is being caused by the scheduler shutting down an FT8 service.

  3. Tracking down where it hangs shows the following:

(gdb) py-bt
Traceback (most recent call first):
  File "/usr/lib/python3/dist-packages/csdr/chain/__init__.py", line 139, in stop
    w.stop()
  File "/usr/lib/python3/dist-packages/csdr/chain/__init__.py", line 139, in stop
    w.stop()
  File "/usr/lib/python3/dist-packages/owrx/service/__init__.py", line 106, in stopServices
    service.stop()
  File "/usr/lib/python3/dist-packages/owrx/service/__init__.py", line 76, in onStateChange
    self.stopServices()
  File "/usr/lib/python3/dist-packages/owrx/source/__init__.py", line 579, in setState
    c.onStateChange(state)
  File "/usr/lib/python3/dist-packages/owrx/source/__init__.py", line 474, in stop
    self.setState(SdrSourceState.STOPPING)
  File "/usr/lib/python3/dist-packages/owrx/source/connector.py", line 66, in stop
    super().stop()
  File "/usr/lib/python3/dist-packages/owrx/source/__init__.py", line 539, in checkStatus
    self.stop()
  File "/usr/lib/python3/dist-packages/owrx/service/schedule.py", line 293, in _setCurrentEntry
    self.source.checkStatus()
  File "/usr/lib/python3/dist-packages/owrx/service/schedule.py", line 306, in selectProfile
  1. The native code where it hangs is inside CSDR:
#4  0x0000ffffa13e32a0 in std::thread::join() () from /lib/aarch64-linux-gnu/libstdc++.so.6
#5  0x0000ffffa15a385c in Csdr::AsyncRunner::stop() () from /lib/aarch64-linux-gnu/libcsdr++.so.0.18
  1. And the hanging module is Bandpass, that is inside Selector, that is inside ServiceSelectorChain for FT8:
(gdb) py-print w
local 'w' = <pycsdr.modules.Bandpass at remote 0xffffa0b7ad30>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant