Slicer 4.10.1 for linux crashes when using live reconstruction in module Plus Remote

Hi,
I am on Ubuntu 18.04.2
I use a version of Plus built from sources

I use Plus to retrieve an image and a transform streams. I added a volume reconstructor:

<PlusConfiguration version="2.1">
	<DataCollection StartupDelaySec="1.0" >
		<DeviceSet 
			Name="Plus server: Local images and transform"
			Description="Broadcasting images and positions generated by a local server through OpenIGTLink."/>
		<Device
			Id="Local_Image"
			Type="OpenIGTLinkVideo"
			MessageType="IMAGE"
			ServerAddress="127.0.0.1"
			ServerPort="30001"
			IgtlMessageCrcCheckEnabled="FALSE"
			UseReceivedTimestamps="FALSE"
			SendTimeoutSec="30"
			ReceiveTimeoutSec="30"
			ReconnectOnReceiveTimeout ="FALSE">
			<DataSources>
				<DataSource Id="Video" Type="Video" PortUsImageOrientation="MF"/>
			</DataSources>
			<OutputChannels>
				<OutputChannel Id="VideoStream" VideoDataSourceId="Video" />
			</OutputChannels>
		</Device>
		<Device
			Id="Local_Transform"
			Type="OpenIGTLinkTracker"
			MessageType="TRANSFORM"
			ServerAddress="127.0.0.1"
			ServerPort="30000"
			IgtlMessageCrcCheckEnabled="FALSE"
			UseReceivedTimestamps="FALSE"
			SendTimeoutSec="30"
			ReceivedTimeoutSec="30"
			ToolReferenceFrame="KUKABase"
			ReconnectOnReceiveTimeout ="FALSE">
			<DataSources>
				<DataSource Id="Flange" Type="Tool"/>
			</DataSources>
			<OutputChannels>
				<OutputChannel Id="TrackerStream">
					<DataSource Id="Flange"/>
				</OutputChannel>
			</OutputChannels>
		</Device>
		<Device 
			Id="TrackedVideoDevice" 
			Type="VirtualMixer" >
			<InputChannels>
				<InputChannel Id="TrackerStream" />
				<InputChannel Id="VideoStream" />
			</InputChannels>
			<OutputChannels>
				<OutputChannel Id="TrackedVideoStream"/>
			</OutputChannels>
		</Device>
		<Device
			Id="CaptureDevice"
			Type="VirtualCapture">
			<InputChannels>
				<InputChannel Id="TrackedVideoStream" />
			</InputChannels>
		</Device>
		<Device
			Id="VolumeReconstructorDevice"
			Type="VirtualVolumeReconstructor"
			OutputVolDeviceName="3DScan">
			<InputChannels>
				<InputChannel Id="TrackedVideoStream" />
			</InputChannels>
			<VolumeReconstruction
				ImageCoordinateFrame="Image" ReferenceCoordinateFrame="KUKABase"
				Interpolation="LINEAR" Optimization="NONE" CompoundingMode="MEAN" FillHoles="OFF" NumberOfThreads="0"
				ClipRectangleOrigin="0 0" ClipRectangleSize="0 0"
				OutputOrigin="0 0 0" OutputExtent="0 300 0 300 0 300" OutputSpacing="0.15 0.15 0.15" />
		</Device>
	</DataCollection>
	<CoordinateDefinitions>
		<Transform From="Transducer" To="Flange"
			Matrix="1 0 0 0
							0 1 0 0
							0 0 1 0
							0 0 0 1"/>	
		<Transform From="Image" To="Transducer"
			Matrix="0.0616 0 0 0
							0 0 0.0616 0
							0 -0.0616 0 6.56
							0 0 0 1"/>
  </CoordinateDefinitions> 
	<PlusOpenIGTLinkServer
		MaxNumberOfIgtlMessagesToSend="1"
		MaxTimeSpentWithProcessingMs="50"
		ListeningPort="18944"
		OutputChannelId="TrackedVideoStream"
		IgtlMessageCrcCheckEnabled="FALSE" 
		SendValidTransformsOnly="FALSE">
		<DefaultClientInfo>
			<MessageTypes>
				<Message Type="IMAGE" />
				<Message Type="TRANSFORM" />
			</MessageTypes>
			<ImageNames>
				<Image Name="Image" EmbeddedTransformToFrame="KUKABase"/>
			</ImageNames>
			<TransformNames>
				<Transform Name="FlangeToKUKABase" />
    			</TransformNames>
		</DefaultClientInfo>
	</PlusOpenIGTLinkServer>
</PlusConfiguration>

I use the Plus Remote module for live reconstruction. It works fine on Slicer 4.8.1 for linux.
On Slicer 4.10.1 for linux, after Plus indicates: “Send reconstructed volume to client through OpenIGTLink|” Slicer freezes.
For those both version of Slicer I use binary release of Slicer and I download module with the module manager.

On a Slicer 4.11 built from sources, after the same message sent by Plus, Slicer seems to enter an infinite loop (one CPU at 100%).

Confirmed, I can reproduce the problem.

Opened issue in SlicerOpenIGTLink: https://github.com/openigtlink/SlicerOpenIGTLink/issues/73
I’ll debug and let you know when I find a solution.

@Tiffas The problem in SlicerOpenIGTLink should be fixed by: https://github.com/IGSIO/OpenIGTLinkIO/commit/f5bb3b1848f7397bd836beae1682c994357b2427.

It will be available in the Stable and Nightly release tomorrow once the extensions have been built.

2 Likes

I confirm that after rebuilding https://github.com/openigtlink/SlicerOpenIGTLink it works fine. Thanks for your very fast fix !