GNU bug report logs - #30729
r-lambda-r not reproducible

Previous Next

Package: guix;

Reported by: Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de>

Date: Tue, 6 Mar 2018 11:59:02 UTC

Severity: normal

Done: Ricardo Wurmus <rekado <at> elephly.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30729 in the body.
You can then email your comments to 30729 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#30729; Package guix. (Tue, 06 Mar 2018 11:59:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Tue, 06 Mar 2018 11:59:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de>
To: <bug-guix <at> gnu.org>
Subject: r-lambda-r not reproducible
Date: Tue, 6 Mar 2018 12:57:24 +0100
The r-lambda-r package is not reproducible.  The differences in the RDX
files indicates that the package’s RDB file includes references to
environments that differ in size, which leads to variables being stored
at different offsets in the RDB file.

Here’s the diffoscope output:

--8<---------------cut here---------------start------------->8---
diffoscope /gnu/store/gpg3f6vr7g0mngbdwdg0k9fjiv8azsyy-r-lambda-r-1.2{,-check}/site-library/lambda.r/R/lambda.r.rdx
--- /gnu/store/gpg3f6vr7g0mngbdwdg0k9fjiv8azsyy-r-lambda-r-1.2/site-library/lambda.r/R/lambda.r.rdx
+++ /gnu/store/gpg3f6vr7g0mngbdwdg0k9fjiv8azsyy-r-lambda-r-1.2-check/site-library/lambda.r/R/lambda.r.rdx
├── lambda.r.rdx-content
│ ├── Rscript -e 'args <- commandArgs(TRUE); readRDS(args[1])' {}
│ │┄ stderr from `Rscript -e args <- commandArgs(TRUE); readRDS(args[1]) /tmp/tmplby_iopd_diffoscope/0659788e-e772-42e4-8834-de6ca3182877`:
│ │┄ During startup - Warning message:
│ │┄ Setting LC_CTYPE failed, using "C"
│ │┄ stderr from `Rscript -e args <- commandArgs(TRUE); readRDS(args[1]) /tmp/tmpwy693qkv_diffoscope/26aa8f31-c6c2-4bba-9438-5b48a498ddab`:
│ │┄ During startup - Warning message:
│ │┄ Setting LC_CTYPE failed, using "C"
│ │ @@ -80,135 +80,135 @@
│ │  $variables$debug.lr
│ │  [1] 16521   347
│ │  
│ │  $variables$dereference_type
│ │  [1] 16868   474
│ │  
│ │  $variables$describe
│ │ -[1] 21557  1199
│ │ +[1] 21563  1199
│ │  
│ │  $variables$fast_forward
│ │ -[1] 22756   183
│ │ +[1] 22762   183
│ │  
│ │  $variables$fill_args
│ │ -[1] 22939   981
│ │ +[1] 22945   981
│ │  
│ │  $variables$from_root_env
│ │ -[1] 23920   115
│ │ +[1] 23926   115
│ │  
│ │  $variables$get_function_env
│ │ -[1] 24035   298
│ │ +[1] 24041   298
│ │  
│ │  $variables$get_name
│ │ -[1] 24333   236
│ │ +[1] 24339   236
│ │  
│ │  $variables$get_type
│ │ -[1] 24569   296
│ │ +[1] 24575   296
│ │  
│ │  $variables$get_type_index
│ │ -[1] 24865  1443
│ │ +[1] 24871  1443
│ │  
│ │  $variables$get_variant
│ │ -[1] 26308   280
│ │ +[1] 26314   280
│ │  
│ │  $variables$guard_fn
│ │ -[1] 26588  2299
│ │ +[1] 26594  2299
│ │  
│ │  $variables$has_ellipsis
│ │ -[1] 28887   234
│ │ +[1] 28893   234
│ │  
│ │  $variables$has_variant
│ │ -[1] 29121  2816
│ │ +[1] 29127  2816
│ │  
│ │  $variables$idx_ellipsis
│ │ -[1] 31937   137
│ │ +[1] 31943   137
│ │  
│ │  $variables$init_function
│ │ -[1] 32074   402
│ │ +[1] 32080   402
│ │  
│ │  $variables$is.bound
│ │ -[1] 32476   209
│ │ +[1] 32482   209
│ │  
│ │  $variables$is.debug
│ │ -[1] 32685   150
│ │ +[1] 32691   150
│ │  
│ │  $variables$is.infix
│ │ -[1] 32835   117
│ │ +[1] 32841   117
│ │  
│ │  $variables$is.type
│ │ -[1] 32952   115
│ │ +[1] 32958   115
│ │  
│ │  $variables$iterator
│ │ -[1] 33067   344
│ │ +[1] 33073   344
│ │  
│ │  $variables$parse_body
│ │ -[1] 33411   940
│ │ +[1] 33417   940
│ │  
│ │  $variables$parse_eval
│ │ -[1] 34351  1915
│ │ +[1] 34357  1915
│ │  
│ │  $variables$parse_fun
│ │ -[1] 36266  3139
│ │ +[1] 36272  3139
│ │  
│ │  $variables$parse_guard
│ │ -[1] 39405  1227
│ │ +[1] 39411  1227
│ │  
│ │  $variables$parse_infix
│ │ -[1] 40632  1329
│ │ +[1] 40638  1329
│ │  
│ │  $variables$parse_types
│ │ -[1] 41961   511
│ │ +[1] 41967   511
│ │  
│ │  $variables$print.lambdar.fun
│ │ -[1] 42472   438
│ │ +[1] 42478   438
│ │  
│ │  $variables$print.lambdar.type
│ │ -[1] 42910   417
│ │ +[1] 42916   417
│ │  
│ │  $variables$really_get
│ │ -[1] 43327   293
│ │ +[1] 43333   293
│ │  
│ │  $variables$return_type
│ │ -[1] 43620   474
│ │ +[1] 43626   474
│ │  
│ │  $variables$seal
│ │ -[1] 44094   210
│ │ +[1] 44100   210
│ │  
│ │  $variables$setup_parent
│ │ -[1] 44304   315
│ │ +[1] 44310   315
│ │  
│ │  $variables$signature_idx
│ │ -[1] 44619   427
│ │ +[1] 44625   427
│ │  
│ │  $variables$strip_ellipsis
│ │ -[1] 45046   123
│ │ +[1] 45052   123
│ │  
│ │  $variables$strip_quotes
│ │ -[1] 45169   111
│ │ +[1] 45175   111
│ │  
│ │  $variables$target_env
│ │ -[1] 45280  1266
│ │ +[1] 45286  1266
│ │  
│ │  $variables$transform_attrs
│ │ -[1] 46546  2995
│ │ +[1] 46552  2995
│ │  
│ │  $variables$undebug.all
│ │ -[1] 49541   121
│ │ +[1] 49547   121
│ │  
│ │  $variables$undebug.lr
│ │ -[1] 49662   399
│ │ +[1] 49668   399
│ │  
│ │  $variables$update_type_map
│ │ -[1] 50061   206
│ │ +[1] 50067   206
│ │  
│ │  $variables$use_error
│ │ -[1] 50267   222
│ │ +[1] 50273   222
│ │  
│ │  $variables$which.debug
│ │ -[1] 50489   106
│ │ +[1] 50495   106
│ │  
│ │  
│ │  $references
│ │  $references$`env::1`
│ │  [1] 7972  350
│ │  
│ │  $references$`env::2`
│ │ @@ -220,22 +220,22 @@
│ │  $references$`env::4`
│ │  [1] 8367  121
│ │  
│ │  $references$`env::5`
│ │  [1] 17342   657
│ │  
│ │  $references$`env::6`
│ │ -[1] 17999   584
│ │ +[1] 17999   588
│ │  
│ │  $references$`env::7`
│ │ -[1] 18583   807
│ │ +[1] 18587   810
│ │  
│ │  $references$`env::8`
│ │ -[1] 19390   617
│ │ +[1] 19397   618
│ │  
│ │  $references$`env::9`
│ │ -[1] 20007  1550
│ │ +[1] 20015  1548
│ │  
│ │  
│ │  $compressed
│ │  [1] TRUE
--8<---------------cut here---------------end--------------->8---


--
Ricardo




Information forwarded to bug-guix <at> gnu.org:
bug#30729; Package guix. (Fri, 09 Mar 2018 21:44:02 GMT) Full text and rfc822 format available.

Message #8 received at 30729 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de>
To: <30729 <at> debbugs.gnu.org>
Subject: Re: r-lambda-r not reproducible
Date: Fri, 9 Mar 2018 22:43:15 +0100
Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de> writes:

> The r-lambda-r package is not reproducible.  The differences in the RDX
> files indicates that the package’s RDB file includes references to
> environments that differ in size, which leads to variables being stored
> at different offsets in the RDB file.
[…]

> │ │  $references$`env::6`
> │ │ -[1] 17999   584
> │ │ +[1] 17999   588
> │ │
> │ │  $references$`env::7`
> │ │ -[1] 18583   807
> │ │ +[1] 18587   810
> │ │
> │ │  $references$`env::8`
> │ │ -[1] 19390   617
> │ │ +[1] 19397   618
> │ │
> │ │  $references$`env::9`
> │ │ -[1] 20007  1550
> │ │ +[1] 20015  1548

The problem is indeed that the sizes of the serialised environments
differ.  But how can I inspect these environments?

The RDX file is an index into the compressed binary RDB.  The index
tells me that `env::6` is found at offset 17999 and has a size of 584
bytes (or 588 in the second build).

R internally uses lazyLoadDBfetch to look up values in serialised files
without having to load the full file into memory.  We can do the same in
an R session.  Here I use a different offset and size for the new build
I have here:

--8<---------------cut here---------------start------------->8---
e <- lazyLoadDBfetch(as.integer(c(16386, 659)),
                     file="/gnu/store/z53g4n9frbgcvbkpq0ai1y286177gz3i-r-lambda-r-1.2/site-library/lambda.r/R/lambda.r.rdb",
                     compressed=TRUE,
                     hook=NULL)
--8<---------------cut here---------------end--------------->8---

Now looking at the contents of “e”, I see that it has a “bindings”
field.  And this contains values like this:

--8<---------------cut here---------------start------------->8---
$Enc
[1] "unknown"

$filename
[1] "<text>"

$fixedNewlines
[1] TRUE

$isFile
[1] FALSE

$lines
[1] "function(...) UseFunction(describe,\"describe\",...)"

[…]

$timestamp
[1] "2018-03-08 01:21:11 CET"

$wd
[1] "/tmp/guix-build-r-lambda-r-1.2.drv-0/lambda.r"
--8<---------------cut here---------------end--------------->8---

“timestamp”?  Hah!

Searching the R sources indicates that this value is set in
“src/library/base/R/srcfile.R”, which I’ve previously encountered in the
arguments field of “r-minimal”.  It looks like this value is taken from
the source file’s mtime, but resetting the timestamps before the
“install” phase didn’t seem to have helped.  Maybe this needs to be done
at some other point that is somewhere deep within R CMD INSTALL.

In that case, I think we can do the same as for Python and introduce a
check for DETERMINISTIC_BUILD into “srcfile”.

--
Ricardo




Reply sent to Ricardo Wurmus <rekado <at> elephly.net>:
You have taken responsibility. (Sun, 11 Mar 2018 11:34:02 GMT) Full text and rfc822 format available.

Notification sent to Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de>:
bug acknowledged by developer. (Sun, 11 Mar 2018 11:34:02 GMT) Full text and rfc822 format available.

Message #13 received at 30729-done <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 30729-done <at> debbugs.gnu.org
Subject: Re: bug#30729: r-lambda-r not reproducible
Date: Sun, 11 Mar 2018 12:17:42 +0100
Ricardo Wurmus <ricardo.wurmus <at> mdc-berlin.de> writes:

> Searching the R sources indicates that this value is set in
> “src/library/base/R/srcfile.R”, which I’ve previously encountered in the
> arguments field of “r-minimal”.  It looks like this value is taken from
> the source file’s mtime, but resetting the timestamps before the
> “install” phase didn’t seem to have helped.  Maybe this needs to be done
> at some other point that is somewhere deep within R CMD INSTALL.

This is now fixed with commit 0fa4702c041a5746ec3a58b39e4276c39d18e7da.

--
Ricardo






bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 09 Apr 2018 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 355 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.