Source: librist
Version: 0.2.8+dfsg-1
Severity: serious
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)

The new version of librist in unstable is failing its build-time tests on
all 32-bit architectures (armel, armhf, i386 and several ports
architectures):

> Summary of Failures:
> 
> 3/21 libRIST:simple+unicast / Simple profile unicast packet loss 10%          
>                                                                  FAIL         
>     0.05s   killed by signal 11 SIGSEGV
> 4/21 libRIST:simple+unicast / Simple profile unicast packet loss 25%          
>                                                                  FAIL         
>     0.03s   killed by signal 11 SIGSEGV

It's likely to be easy to reproduce this on an amd64 machine by building
the i386 package (debuild -ai386), either cross-compiling or in an
i386 chroot, container or VM. This is a regression since 0.2.7+dfsg-1,
so I would suggest starting by reviewing the differences between those
versions.

This could be related to one of these compiler warnings, which indicate
assumptions in the source code that are not true on ILP32 architectures:

> ../tools/srp_shared.c: In function ‘user_verifier_lookup’:
> ../tools/srp_shared.c:176:43: warning: left shift count >= width of type 
> [-Wshift-count-overflow]
>   176 |         *generation = (buf.st_mtim.tv_sec << 32) | 
> buf.st_mtim.tv_nsec;
>       |                                           ^~

> ../tools/ristreceiver.c: In function ‘cb_stats’:
> ../tools/ristreceiver.c:446:86: warning: cast from pointer to integer of 
> different size [-Wpointer-to-int-cast]
>   446 |                         rist_prometheus_parse_stats(prom_stats_ctx, 
> stats_container, (uint64_t)arg);
>       |                                                                       
>                ^

> ../tools/ristsender.c: In function ‘setup_rist_peer’:
> ../tools/ristsender.c:447:74: warning: cast to pointer from integer of 
> different size [-Wint-to-pointer-cast]
>   447 |         if (rist_stats_callback_set(ctx, setup->statsinterval, 
> cb_stats, (void*)w->id) == -1) {
>       |                                                                       
>    ^

Or it could be something more subtle that gcc is unable to diagnose, like
type-size assumptions in a varargs function.

(It also failed to build on arm64, but that seems to be unrelated:
a different test failed there with an assertion failure, that test has
failed similarly in the past, and it doesn't fit the pattern of 64-bit
architectures succeeding but 32-bit failing. That's out of scope for this
particular bug report.)

librist4:i386 is pulled in by this dependency chain for users of Wine:

    wine32 -> libwine -R-> gstreamer1.0-libav -> libavformat60 -> librist4

(where -R-> indicates a Recommends)

so having both amd64 and i386 versions installed is going to be a relatively
normal thing to do. Please could you take a look?

Thanks,
    smcv

Reply via email to