Skip to content

P25/DMR Post-Teardown Residual Sample Processing #1584

Closed
@DSheirer

Description

@DSheirer

Describe the bug

Following a traffic channel teardown, the executor continues to process remaining samples in the buffer and the decoder(s) are potentially in a bad state because the previous executor run cycle was aborted immediately after a message was published downstream.

Expected behavior
The decoder module(s) should incorporate a boolean flag that gets set when the module is started/stopped so that the decoder can check this flag before sending each sample to the decoder ... allowing the run to abort without sending further samples for processing.

Application Log

20230624 125602.384 [sdrtrunk polyphase channel thread 1] ERROR i.g.d.sample.Broadcaster - Error while broadcasting [class io.github.dsheirer.dsp.symbol.Dibit] to listeners [Log Suppress 1/5]  [469MB/674MB 69%]
java.lang.NullPointerException: Cannot invoke "io.github.dsheirer.module.decode.p25.phase1.P25P1DataUnitID.getMessageLength()" because "this.mDataUnitID" is null
	at io.github.dsheirer.module.decode.p25.phase1.P25P1MessageFramer.dispatchMessage(P25P1MessageFramer.java:334)
	at io.github.dsheirer.module.decode.p25.phase1.P25P1MessageFramer.receive(P25P1MessageFramer.java:204)
	at io.github.dsheirer.module.decode.p25.phase1.P25P1MessageFramer.receive(P25P1MessageFramer.java:70)
	at io.github.dsheirer.sample.Broadcaster.broadcast(Broadcaster.java:128)
	at io.github.dsheirer.sample.Broadcaster.receive(Broadcaster.java:52)
	at io.github.dsheirer.dsp.psk.PSKDemodulator.broadcast(PSKDemodulator.java:61)
	at io.github.dsheirer.dsp.psk.DQPSKGardnerDemodulator.calculateSymbol(DQPSKGardnerDemodulator.java:88)
	at io.github.dsheirer.dsp.psk.PSKDemodulator.receive(PSKDemodulator.java:117)
	at io.github.dsheirer.dsp.psk.PSKDemodulator.receive(PSKDemodulator.java:93)
	at io.github.dsheirer.module.decode.p25.phase1.P25P1DecoderLSM.receive(P25P1DecoderLSM.java:116)
	at io.github.dsheirer.module.decode.p25.phase1.P25P1DecoderLSM.receive(P25P1DecoderLSM.java:39)
	at io.github.dsheirer.sample.Broadcaster.broadcast(Broadcaster.java:128)
	at io.github.dsheirer.sample.Broadcaster.receive(Broadcaster.java:52)
	at io.github.dsheirer.dsp.filter.channelizer.PolyphaseChannelSource.receive(PolyphaseChannelSource.java:143)
	at io.github.dsheirer.dsp.filter.channelizer.PolyphaseChannelSource.receive(PolyphaseChannelSource.java:40)
	at io.github.dsheirer.dsp.filter.channelizer.output.TwoChannelOutputProcessor.process(TwoChannelOutputProcessor.java:124)
	at io.github.dsheirer.dsp.filter.channelizer.output.ChannelOutputProcessor.lambda$new$0(ChannelOutputProcessor.java:58)
	at io.github.dsheirer.util.Dispatcher.process(Dispatcher.java:182)
	at io.github.dsheirer.util.Dispatcher$ProcessorWithHeartbeat.run(Dispatcher.java:224)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions