[Difx-users] Multi-thread 4-bit VDIF fails with 'vdifmux() failed with return code -2014' {External} {External} {External}

Walter Brisken wbrisken at nrao.edu
Wed May 21 11:11:56 EDT 2025


Hi Hugh,


It may have been oversight that led to the current code and lack of 
support for your mode.  Can you create a branch with the implementation 
of your fix, or just sent a diff to the list, and I can take a look?


I am pretty sure no one has actually ever used DiFX with VDIF streams 
that are both multi-channel per thread and multi-thread, so this may be 
new ground you are covering.  In theory it should be supported.


Thanks,


Walter


On 5/21/25 08:57, Hugh Garsden via Difx-users wrote:
> Hi all,
>
> Regarding Jake's message below, difx is using multiplexing to combine 
> multiple threads into a single thread. However it can only deal with 1 
> channel per input thread because that is hardwired in the code.  Here: 
> https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150 
> <https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150>. 
> The way to change that is mentioned in comment, which is to call 
> setvdifmuxinputchannels(). That's what the vmux program does, and it 
> works ok. I'm wondering why difx doesn't do that, and maybe there 
> should be a warning about it not doing that. Anyway, that line of code 
> is in configurevdifmux() so I've added a call to 
> setvdifmuxinputchannels() after configurevdifmux() is called in difx, 
> and now the multiplexing is working with more than 1 channel.
>
>           Hugh
>
> ------------------------------------------------------------------------
> *From:* Difx-users <difx-users-bounces at listmgr.nrao.edu> on behalf of 
> Jacob Brooks via Difx-users <difx-users at listmgr.nrao.edu>
> *Sent:* 20 February 2025 12:12
> *To:* difx-users at listmgr.nrao.edu <difx-users at listmgr.nrao.edu>
> *Subject:* [Difx-users] Multi-thread 4-bit VDIF fails with 'vdifmux() 
> failed with return code -2014' {External}
> Hi all,
>
> We're currently trying to get DiFX working with the following setup: 
> 4-bit, 2 channel (L + R pols), 2 threads (2 subbands), delivered in 
> real time via UDP. It has been working fine up until the point where 
> we tried adding a second thread - single-thread VDIF has been working 
> for us.
>
> When running in multi-threaded mode, the datastream processes crash 
> with the following message:
>
> 'vdifmux() failed with return code -2014, likely input buffer is too 
> small!'
>
> I have managed to trace the problem to a check in 
> 'getLowestFrameNumber' in vdifio/src/vdifmux.c. The inequality check 
> in that function:
>
> 'getVDIFNumChannels(vh) != vm->inputChannelsPerThread'
>
> succeeds as the function returns a value of 2 while 
> 'inputChannelsPerThread' has a value of 1. This happens for every 
> iteration so vdifmux() fails and returns a -2014 error code.
>
> I'm not sure where to go from here and was hoping someone more 
> familiar with DiFX could help out. Hopefully I'm not missing something 
> obvious! If you need any more information I haven't provided please do 
> ask.
>
> Cheers,
> Jake
>
> _______________________________________________
> Difx-users mailing list
> Difx-users at listmgr.nrao.edu
> https://listmgr.nrao.edu/mailman/listinfo/difx-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listmgr.nrao.edu/pipermail/difx-users/attachments/20250521/a279cb8f/attachment-0001.html>


More information about the Difx-users mailing list