Adding and removing the same channel leads to a crash
Run ndscope with no options. Add a single channel with the channel selection dialog. Reopen the channel selection dialog and remove the channel. Repeat several times.
patrick.thomas@zotws19:~/files/ndscope$ LOG_LEVEL=DEBUG python3 -m ndscope
TEMPLATE: created template from channel list
SCOPE: version 0.13.2.dev91+g1fedb33
SCOPE: server h1daqnds0:8088
DATA : RESET
DATA : data store initialized
SCOPE: creating plot {}...
SCOPE: connecting plot 0...
SCOPE: set window: -2 0
SCOPE: loading template...
SCOPE: clearing plots...
SCOPE: removing plot: (0, 0)
SCOPE: creating plot {'row': 0, 'col': 0, 'colspan': 1}...
SCOPE: connecting plot 0...
SCOPE: t0=None, window=(-2, 0)
SCOPE: START
SCOPE: set window: -2 0
DATA : START ONLINE
DATA : RESET
DATA : CMD: find_channels {}
NDS : find_channels(**{'channel_glob': '*', 'channel_type_mask': 39})
DATA : REQUEST: raw (1323033040.337588, 1323033042.337588)
DATA : channel list received: 341493 channels
SCOPE: building channel models...
DATA : DONE: ('find_channels', None)
SCOPE: channel select dialog ready.
SCOPE: added channel: H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER
DATA : CHANNEL H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER 1
SCOPE: RESET: ('start', {'window': (-2, 0)})
SCOPE: START
SCOPE: set window: -2 0
DATA : START ONLINE
DATA : RESET
DATA : CMD: online {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER']}
NDS : iterate(**{'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'stride': -1, 'params': <nds2.parameters; proxy of <Swig Object of type 'parameters *' at 0x7f4c279e3e10> >})
DATA : CMD: extendleft {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'start_end': (1323035348.0, 1323035350.0625)}
NDS : fetch(**{'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'gps_start': 1323035348, 'gps_stop': 1323035351, 'params': <nds2.parameters; proxy of <Swig Object of type 'parameters *' at 0x7f4c27a00720> >})
/usr/lib/python3/dist-packages/pyqtgraph/graphicsItems/PlotCurveItem.py:131: RuntimeWarning: All-NaN slice encountered
b = (np.nanmin(d), np.nanmax(d))
DATA : CMD: extendleft {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'start_end': (1323035348.0, 1323035350.125)}
DATA : BUSY: extendleft-raw
DATA : DONE: ('extendleft-raw', None)
SCOPE: removed channel: H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER
DATA : CHANNEL H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER 0
DATA : RESTART
DATA : DONE: ('online', None)
SCOPE: added channel: H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER
DATA : CHANNEL H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER 1
DATA : CMD: extend {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'start_end': (1323035353.25, 1323035355.25)}
NDS : fetch(**{'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'gps_start': 1323035353, 'gps_stop': 1323035356, 'params': <nds2.parameters; proxy of <Swig Object of type 'parameters *' at 0x7f4c27a003f0> >})
SCOPE: RESET: ('start', {'window': (-2, 0)})
SCOPE: START
SCOPE: set window: -2 0
DATA : START ONLINE
DATA : RESET
DATA : CMD: online {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER']}
NDS : iterate(**{'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'stride': -1, 'params': <nds2.parameters; proxy of <Swig Object of type 'parameters *' at 0x7f4c27a00690> >})
DATA : CMD: extendleft {'trend': 'raw', 'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'start_end': (1323035351.0, 1323035356.0)}
DATA : DONE: ('extend-raw', None)
NDS : fetch(**{'channels': ['H0:FMC-CS_CHILLER_CHAN_1_ACTIVE_POWER'], 'gps_start': 1323035351, 'gps_stop': 1323035356, 'params': <nds2.parameters; proxy of <Swig Object of type 'parameters *' at 0x7f4c27a07ed0> >})
DATA : DONE: ('extendleft-raw', None)
Traceback (most recent call last):
File "/ligo/home/patrick.thomas/files/ndscope/ndscope/data.py", line 603, in remote_recv_data
self.db[trend].append(dbd)
File "/ligo/home/patrick.thomas/files/ndscope/ndscope/data.py", line 245, in append
self.buffers[chan].append(buf)
File "/ligo/home/patrick.thomas/files/ndscope/ndscope/data.py", line 157, in append
assert buf.gps_start == self.gps_end, "append buffer start {} does not equal end {}".format(buf.gps_start, self.gps_end)
AssertionError: append buffer start 1323035362.0 does not equal end 1323035356.0
Aborted
patrick.thomas@zotws19:~/files/ndscope$