В Thu, 8 May 2025 12:01:47 -0400
Tracy Morrison Sweet <tsw...@umd.edu> пишет:

> New submission 
> Package was archived on CRAN
> 
> I’m not sure how to do anything to remove this note.

This note is to be expected.

> In process.txt and summary.txt, it says "File: HLSM-Ex.Rout
> vendor/cigraph/src/constructors/adjacency.c:87:34: runtime error: nan
> is outside the range of representable values of type ‘long’"

The link to the original issue that got your package archived is more
informative because it contains the backtrace and shows the place in
your examples where the problem happens:

https://www.stats.ox.ac.uk/pub/bdr/memtests/clang-UBSAN/HLSM/HLSM-Ex.Rout

> > fixed.fit = HLSMfixedEF(Y = ps.advice.mat, senderCov=ps.node.df,
> +     initialVals = initialVals,priors = priors,
> +     tune = tune,tuneIn = FALSE,dd = 2,niter = niter)
> core/constructors/adjacency.c:47:26: runtime error: nan is outside
> the range of representable values of type 'long' #0 0x7f09504c6e4b in
> igraph_i_adjacency_directed
> /tmp/Rtmp9HF8V2/R.INSTALL659cd504fd46b/igraph/src/core/constructors/adjacency.c:47:26
> #1 0x7f09504c5715 in igraph_adjacency
> /tmp/Rtmp9HF8V2/R.INSTALL659cd504fd46b/igraph/src/core/constructors/adjacency.c:212:9
> #2 0x7f0950c654a3 in R_igraph_graph_adjacency
> /tmp/Rtmp9HF8V2/R.INSTALL659cd504fd46b/igraph/src/rinterface_extra.c:4861:3

The file path is now different, but the issue is most likely the same.
During a call to HLSMfixedEF(), a matrix containing a NaN value is
passed to the 'igraph' package, where the NaN is converted to an
integer:

https://github.com/igraph/rigraph/blob/9a2816248eb837077b5af28bad7b1b9c0713b128/src/vendor/cigraph/src/constructors/adjacency.c#L87

Unfortunately, converting a NaN into an integer is undefined behaviour
according to the C standard. The program is allowed to do literally
anything, so it caused your package to be archived.

Ideally, 'igraph' could produce an informative error message upon
detecting a NaN, but you can avoid the problem on your end by making
sure that all values in your adjacency matrices are finite before
calling igraph::graph.adjacency().

To see the problem for yourself, you'll need a "sanitized" build of R:
https://cran.r-project.org/doc/manuals/R-exts.html#Using-Undefined-Behaviour-Sanitizer

Sanitizers are somewhat finicky to use. The container images
docker.io/rocker/r-devel-ubsan-clang and
ghcr.io/r-hub/containers/clang-ubsan, or the R-hub service may help.

Good luck! If this wasn't detailed enough, don't hesitate to ask
follow-up questions.

-- 
Best regards,
Ivan

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to