Control: forwarded -1 https://github.com/jorgenschaefer/elpy/issues/1477

Hi Helmut,

On Thu, Oct 04, 2018 at 07:34:31PM +0200, Helmut Grohne wrote:
> Source: elpy
> Version: 1.24.0-1
> Severity: serious
> Tags: ftbfs
> 
> elpy fails to build from source randomly. A build log contains:

I'm aware of this and opened an upstream issue a few days ago;
however, I haven't been able to reproduce it locally.  I've run more
than 15 autopkgtest runs in my amd64 schroot and another 15 in my LXC
one (not including runs to just build the package).  I also can't
trigger it with a plain dpkg-buildpackage.

> | Test elpy-promise-wait-should-return-early-for-resolved-promise backtrace:
> |   (if (unwind-protect (setq value-774 (apply fn-772 args-773)) (setq f
> |   (let (form-description-776) (if (unwind-protect (setq value-774 (app
> |   (let ((value-774 (quote ert-form-evaluation-aborted-775))) (let (for
> |   (let ((fn-772 (function elpy-promise-resolved-p)) (args-773 (list pr
> |   (let ((start-time (current-time)) (promise (elpy-promise nil))) (run
> |   (progn (let ((start-time (current-time)) (promise (elpy-promise nil)
> |   (progn (setq elpy-rpc-timeout 100) (progn (let ((start-time (current
> |   (unwind-protect (progn (setq elpy-rpc-timeout 100) (progn (let ((sta
> |   (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn
> |   (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-b
> |   (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-cu
> |   (unwind-protect (progn (let ((temp-buffer (generate-new-buffer " *te
> |   (let ((old-process-list (process-list)) (old-buffer-list (buffer-lis
> |   (lambda nil (let ((old-process-list (process-list)) (old-buffer-list
> |   ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
> |   ert-run-test([cl-struct-ert-test elpy-promise-wait-should-return-ear
> |   ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test e
> |   ert-run-tests(t #[385 "\306^B\307\"\203G^@\211\211G\310U\203^T^@\211@\20
> |   ert-run-tests-batch(nil)
> |   ert-run-tests-batch-and-exit()
> |   eval((ert-run-tests-batch-and-exit))
> |   command-line-1(("-l" "package" "--eval" "(add-to-list 'package-direc
> |   command-line()
> |   normal-top-level()
> | Test elpy-promise-wait-should-return-early-for-resolved-promise condition:
> |     (ert-test-failed
> |      ((should
> |        (elpy-promise-resolved-p promise))
> |       :form
> |       (elpy-promise-resolved-p
> |        [*elpy-promise* nil nil #<killed buffer> nil])
> |       :value nil))
> |    FAILED  222/362  
> elpy-promise-wait-should-return-early-for-resolved-promise
> 
> This happened in sbuild on unstable/amd64.
> 
> The reproducible builds folks encountered the same failure in one out of
> two builds using pbuilder:
> 
> https://tests.reproducible-builds.org/debian/logs/unstable/amd64/elpy_1.24.0-1.build2.log.gz
> https://tests.reproducible-builds.org/debian/rbuild/unstable/arm64/elpy_1.24.0-1.rbuild.log.gz
> https://tests.reproducible-builds.org/debian/rbuild/unstable/armhf/elpy_1.24.0-1.rbuild.log.gz
> 
> For amd64, only the second build failed.

Other than the build1 to build2 diff, where can I find a list of
everything that varies between the two runs?  At this time my best
guesses are a UTF-8 issue (possibly related to python-3.7), behaviour
that changed between python-3.6 and python-3.7, the mysterious cl vs
cl-lib issue that only affects packages built in an LXC (see below
[2]).  The only reason I suspect something UTF-8 related is there was
an Elpy bug involving the "ö" character sometime in the last year, and
I noticed that build2 has « guillemets ».

> When I tried it locally in
> sbuild, three builds succeeded. I have no clue how the failure is
> caused, but it is evident that it is not broken infrastructure.

I'm not interested in a blame shifting game, because it's not yet
evident where the issue is.  eg: 1) Various emacs tests in other
packages will[have] fail[ed] in pbuilder or in LXC autopkgtest but
always pass in schroot.  2) Autopkgtests began to fail for various
Emacs packages after unversioned emacs was released, but only in LXC,
and no one knows why.  I discovered this hack, which doesn't feel
right: Add "ert_eval = (require 'cl)" to debian/elpa-tests.  It
doesn't feel right because cl-lib should be used.  Of course, it's
also possible that these upstreams have a dynamic (works with cl fails
with cl-lib ) vs lexical scope bug.  That said, I'm doing everything I
can to figure this out ;-)

Because you're able to reproduce it, would you please get a debug
shell and run the ERT tests interactively to get an untruncated
backtrace?  I'd be happy to help out with this if necessary.  If it's
the [2] class of issues then it will only trigger in batch mode and
never in interactive.  That said, the [2] class of issues is usually
reliably triggered on any LXC build or autopkgtest run, but it would
be valuable to eliminate this failure case.

Worst-case scenario will be to disable the
`elpy-promise-wait-should-return-early-for-resolved-promise` test.

Cheers,
Nicholas

Attachment: signature.asc
Description: PGP signature

Reply via email to