HI Cinaed and Jeff, Sorry for the late reply. I checked if I had the qt-6 wayland and xwayland installed. Turns out I didn't have the qt6-wayland installed so I installed it. The issue still remained so I disabled wayland and it seemed to work. Just like what you guys saw, I stopped seeing the issue on my flowgraph.
However, I attempted another flowgraph that used QT GUI Label and the issue came back. I have added the new flowgraph I created along with its generated code. I am working from a WIndows machine that has a Virtual Machine with Ubuntu 22.04. One quick question though: Where would I set the export QT_QPA_PLATFORM Thanks, Jose Ruvalcaba On Thu, Nov 24, 2022 at 5:25 PM Cinaed Simson <cinaed.sim...@gmail.com> wrote: > Hi Jose - I can run your script for hours without any issues on both GR > 3.8 and 3.10. > > Have you tried setting > > export QT_QPA_PLATFORM=wayland > > as indicated in the first error message - to see if the script runs longer > then 10 minutes? > > My guess is if you eliminate the first exception the other exceptions will > disappear. > > Are you working from the console of a linux machine - or are you working > from the console of a Windows machine - and then connecting to the a Linux > machine by some method? > > -- Cinaed > > > On Tue, Nov 22, 2022 at 10:23 PM Jose Ruvalcaba <joruv...@gmail.com> > wrote: > > Hello, >> >> I've been noticing an issue popping out everytime I stop running my >> flowgraph and I was wondering if someone had some insight on it. I have a >> flowgraph where a signal source is connected to a probe signal block. This >> block is constantly updating values and are being displayed using the QT >> GUI Label block. However, after running my flowgraph for about 10 minutes I >> get the following error: >> >> *Executing: /usr/bin/python3 -u >> /home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py* >> >> *Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use >> QT_QPA_PLATFORM=wayland to run on Wayland anyway.* >> >> *Exception in thread Thread-1 (_amp_probe):* >> >> *Traceback (most recent call last):* >> >> * File >> "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", >> line 150, in _amp_probe* >> >> * self.doc.add_next_tick_callback(functools.partial(self.set_amp,val))* >> >> * File "/usr/lib/python3/dist-packages/gnuradio/gr/hier_block2.py", line >> 88, in __getattr__* >> >> * return getattr(self._impl, name)* >> >> *AttributeError: 'gnuradio.gr.gr_python.top_block_pb' object has no >> attribute 'doc'* >> >> *During handling of the above exception, another exception occurred:* >> >> *Traceback (most recent call last):* >> >> * File "/usr/lib/python3.10/threading.py", line 1016, in >> _bootstrap_inner* >> >> * self.run()* >> >> * File "/usr/lib/python3.10/threading.py", line 953, in run* >> >> * self._target(*self._args, **self._kwargs)* >> >> * File >> "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", >> line 152, in _amp_probe* >> >> * self.set_amp(val)* >> >> * File >> "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", >> line 182, in set_amp* >> >> * self.set_variable_qtgui_label_0(self.amp)* >> >> * File >> "/home/spacerfvm/Documents/GNURadio_3.10_flowgraphs/func_probe_test.py", >> line 189, in set_variable_qtgui_label_0* >> >> * Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_0_label, >> "setText", Qt.Q_ARG("QString", >> str(self._variable_qtgui_label_0_formatter(self.variable_qtgui_label_0))))* >> >> *RuntimeError: wrapped C/C++ object of type QLabel has been deleted* >> >> >> It seems that my issue is related to the QT GUI Label block because when >> I remove it and add say QT GUI Number sink, this issue doesn't appear. >> >> Has anyone experienced this issue? If so, would anyone be able to steer >> me in the direction to fix it? I am currently running on Ubuntu 22.04 and >> am running GNU RADIO 3.10.1.1 which I installed using sudo apt-get install. >> I've also attached the flowgraph I am talking about. >> >> Thanks, >> >> Jose Ruvalcaba >> > >
pyephem_fspl_test.grc
Description: Binary data
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # SPDX-License-Identifier: GPL-3.0 # # GNU Radio Python Flow Graph # Title: Pyephem FSPL v1.0 # Author: spacerfvm # GNU Radio version: 3.10.1.1 from packaging.version import Version as StrictVersion if __name__ == '__main__': import ctypes import sys if sys.platform.startswith('linux'): try: x11 = ctypes.cdll.LoadLibrary('libX11.so') x11.XInitThreads() except: print("Warning: failed to XInitThreads()") from PyQt5 import Qt from gnuradio import eng_notation from gnuradio import qtgui from gnuradio.filter import firdes import sip from gnuradio import analog from gnuradio import blocks from gnuradio import gr from gnuradio.fft import window import sys import signal from argparse import ArgumentParser from gnuradio.eng_arg import eng_float, intx import pyephemfspltest_epy_block_0 as epy_block_0 # embedded python block import time import threading from gnuradio import qtgui class pyephemfspltest(gr.top_block, Qt.QWidget): def __init__(self): gr.top_block.__init__(self, "Pyephem FSPL v1.0", catch_exceptions=True) Qt.QWidget.__init__(self) self.setWindowTitle("Pyephem FSPL v1.0") qtgui.util.check_set_qss() try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "pyephemfspltest") try: if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): self.restoreGeometry(self.settings.value("geometry").toByteArray()) else: self.restoreGeometry(self.settings.value("geometry")) except: pass ################################################## # Variables ################################################## self.fspl_test = fspl_test = 0 self.variable_qtgui_label_1 = variable_qtgui_label_1 = fspl_test self.samp_rate = samp_rate = 32000 self.atten_test = atten_test = -1.0/(10.0**(fspl_test/20.0)) self.TLE_LINE_2 = TLE_LINE_2 = "2 25544 51.6433 79.0852 0005185 353.3514 119.8705 15.49577743364510" self.TLE_LINE_1 = TLE_LINE_1 = "1 25544U 98067A 22292.82819656 .00008231 00000-0 15426-3 0 9997" self.Radio_1 = Radio_1 = 100e6 self.Name_of_satellite = Name_of_satellite = "ISS (ZARYA)" ################################################## # Blocks ################################################## self.fspl = blocks.probe_signal_f() self._variable_qtgui_label_1_tool_bar = Qt.QToolBar(self) if None: self._variable_qtgui_label_1_formatter = None else: self._variable_qtgui_label_1_formatter = lambda x: eng_notation.num_to_str(x) self._variable_qtgui_label_1_tool_bar.addWidget(Qt.QLabel("Uplink FSPL (dB) = ")) self._variable_qtgui_label_1_label = Qt.QLabel(str(self._variable_qtgui_label_1_formatter(self.variable_qtgui_label_1))) self._variable_qtgui_label_1_tool_bar.addWidget(self._variable_qtgui_label_1_label) self.top_grid_layout.addWidget(self._variable_qtgui_label_1_tool_bar, 3, 0, 1, 1) for r in range(3, 4): self.top_grid_layout.setRowStretch(r, 1) for c in range(0, 1): self.top_grid_layout.setColumnStretch(c, 1) self.qtgui_freq_sink_x_0 = qtgui.freq_sink_c( 1024, #size window.WIN_BLACKMAN_hARRIS, #wintype 0, #fc samp_rate, #bw "", #name 1, None # parent ) self.qtgui_freq_sink_x_0.set_update_time(0.10) self.qtgui_freq_sink_x_0.set_y_axis(-140, 10) self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB') self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "") self.qtgui_freq_sink_x_0.enable_autoscale(True) self.qtgui_freq_sink_x_0.enable_grid(True) self.qtgui_freq_sink_x_0.set_fft_average(1.0) self.qtgui_freq_sink_x_0.enable_axis_labels(True) self.qtgui_freq_sink_x_0.enable_control_panel(False) self.qtgui_freq_sink_x_0.set_fft_window_normalized(False) labels = ['Source', 'Source with Atten', '', '', '', '', '', '', '', ''] widths = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] colors = ["blue", "red", "green", "black", "cyan", "magenta", "yellow", "dark red", "dark green", "dark blue"] alphas = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] for i in range(1): if len(labels[i]) == 0: self.qtgui_freq_sink_x_0.set_line_label(i, "Data {0}".format(i)) else: self.qtgui_freq_sink_x_0.set_line_label(i, labels[i]) self.qtgui_freq_sink_x_0.set_line_width(i, widths[i]) self.qtgui_freq_sink_x_0.set_line_color(i, colors[i]) self.qtgui_freq_sink_x_0.set_line_alpha(i, alphas[i]) self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.qwidget(), Qt.QWidget) self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win) def _fspl_test_probe(): while True: val = self.fspl.level() try: try: self.doc.add_next_tick_callback(functools.partial(self.set_fspl_test,val)) except AttributeError: self.set_fspl_test(val) except AttributeError: pass time.sleep(1.0 / (10)) _fspl_test_thread = threading.Thread(target=_fspl_test_probe) _fspl_test_thread.daemon = True _fspl_test_thread.start() self.epy_block_0 = epy_block_0.blk(Event='None', frequency=Radio_1, tle_line_1=Name_of_satellite, tle_line_2=TLE_LINE_1, tle_line_3=TLE_LINE_2) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_cc(atten_test) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 1000, 1, 0, 0) ################################################## # Connections ################################################## self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.qtgui_freq_sink_x_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.epy_block_0, 0), (self.fspl, 0)) def closeEvent(self, event): self.settings = Qt.QSettings("GNU Radio", "pyephemfspltest") self.settings.setValue("geometry", self.saveGeometry()) self.stop() self.wait() event.accept() def get_fspl_test(self): return self.fspl_test def set_fspl_test(self, fspl_test): self.fspl_test = fspl_test self.set_atten_test(-1.0/(10.0**(self.fspl_test/20.0))) self.set_variable_qtgui_label_1(self.fspl_test) def get_variable_qtgui_label_1(self): return self.variable_qtgui_label_1 def set_variable_qtgui_label_1(self, variable_qtgui_label_1): self.variable_qtgui_label_1 = variable_qtgui_label_1 Qt.QMetaObject.invokeMethod(self._variable_qtgui_label_1_label, "setText", Qt.Q_ARG("QString", str(self._variable_qtgui_label_1_formatter(self.variable_qtgui_label_1)))) def get_samp_rate(self): return self.samp_rate def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.analog_sig_source_x_0.set_sampling_freq(self.samp_rate) self.blocks_throttle_0.set_sample_rate(self.samp_rate) self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate) def get_atten_test(self): return self.atten_test def set_atten_test(self, atten_test): self.atten_test = atten_test self.blocks_multiply_const_vxx_0.set_k(self.atten_test) def get_TLE_LINE_2(self): return self.TLE_LINE_2 def set_TLE_LINE_2(self, TLE_LINE_2): self.TLE_LINE_2 = TLE_LINE_2 self.epy_block_0.tle_line_3 = self.TLE_LINE_2 def get_TLE_LINE_1(self): return self.TLE_LINE_1 def set_TLE_LINE_1(self, TLE_LINE_1): self.TLE_LINE_1 = TLE_LINE_1 self.epy_block_0.tle_line_2 = self.TLE_LINE_1 def get_Radio_1(self): return self.Radio_1 def set_Radio_1(self, Radio_1): self.Radio_1 = Radio_1 self.epy_block_0.frequency = self.Radio_1 def get_Name_of_satellite(self): return self.Name_of_satellite def set_Name_of_satellite(self, Name_of_satellite): self.Name_of_satellite = Name_of_satellite self.epy_block_0.tle_line_1 = self.Name_of_satellite def main(top_block_cls=pyephemfspltest, options=None): if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"): style = gr.prefs().get_string('qtgui', 'style', 'raster') Qt.QApplication.setGraphicsSystem(style) qapp = Qt.QApplication(sys.argv) tb = top_block_cls() tb.start() tb.show() def sig_handler(sig=None, frame=None): tb.stop() tb.wait() Qt.QApplication.quit() signal.signal(signal.SIGINT, sig_handler) signal.signal(signal.SIGTERM, sig_handler) timer = Qt.QTimer() timer.start(500) timer.timeout.connect(lambda: None) qapp.exec_() if __name__ == '__main__': main()