#756018 mercurial: "hg clone" hangs after "adding changesets"

Package:
mercurial
Source:
mercurial
Description:
easy-to-use, scalable distributed version control system
Submitter:
Vincent Lefevre
Date:
2015-03-09 20:03:09 UTC
Severity:
important
#756018#5
Date:
2014-07-25 13:22:05 UTC
From:
To:
$ hg clone http://dev.mutt.org/hg/mutt
destination directory: mutt
requesting all changes
adding changesets

Then hg is hanging. The CPU, disk and network activity is very low.

The backtrace of the running process:

(gdb) bt
#0  0x00007fc8a741fd7d in __libc_recv (fd=3, buf=0x2162494, n=7614, flags=-1)
    at ../sysdeps/unix/sysv/linux/x86_64/recv.c:29
#1  0x00000000005ada8c in __recv_alias ()
    at /usr/include/x86_64-linux-gnu/bits/socket2.h:44
#2  sock_recv_guts.lto_priv () at ../Modules/socketmodule.c:2422
#3  0x00000000005ad735 in sock_recv.lto_priv ()
    at ../Modules/socketmodule.c:2507
#4  0x00000000004c3c6d in call_function (oparg=<optimized out>,
    pp_stack=<optimized out>) at ../Python/ceval.c:4021
#5  PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#6  0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#7  0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#8  call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#9  PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#10 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#11 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#12 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#13 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#14 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#15 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#16 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#17 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#18 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#19 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#20 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#21 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#22 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#23 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#24 0x00000000004f6bf4 in gen_send_ex.isra.0 (exc=0, arg=0x0)
    at ../Objects/genobject.c:85
#25 gen_iternext.lto_priv () at ../Objects/genobject.c:283
#26 0x00000000004c4026 in PyEval_EvalFrameEx () at ../Python/ceval.c:2498
#27 0x00000000004f6bf4 in gen_send_ex.isra.0 (exc=0, arg=0x0)
    at ../Objects/genobject.c:85
#28 gen_iternext.lto_priv () at ../Objects/genobject.c:283
#29 0x00000000004c4026 in PyEval_EvalFrameEx () at ../Python/ceval.c:2498
#30 0x00000000004f6bf4 in gen_send_ex.isra.0 (exc=0, arg=0x0)
    at ../Objects/genobject.c:85
#31 gen_iternext.lto_priv () at ../Objects/genobject.c:283
#32 0x00000000004c4026 in PyEval_EvalFrameEx () at ../Python/ceval.c:2498
#33 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#34 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#35 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#36 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#37 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#38 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#39 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#40 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#41 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#42 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#43 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#44 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#45 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#46 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#47 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#48 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#49 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#50 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#51 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#52 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#53 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#54 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#55 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#56 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#57 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#58 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#59 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#60 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#61 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#62 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#63 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#64 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#65 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#66 0x00000000004c416a in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#67 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#68 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#69 0x00000000004df2f8 in PyEval_EvalCodeEx (closure=<optimized out>,
    defcount=<optimized out>, defs=<optimized out>, kwcount=<optimized out>,
    kws=<optimized out>, argcount=<optimized out>, args=<optimized out>,
    locals=<optimized out>, globals=<optimized out>, co=<optimized out>)
    at ../Python/ceval.c:3253
#70 function_call.lto_priv () at ../Objects/funcobject.c:526
#71 0x00000000004c768f in PyObject_Call (kw=<optimized out>,
    arg=<optimized out>, func=<optimized out>) at ../Objects/abstract.c:2529
#72 ext_do_call (nk=<optimized out>, na=<optimized out>,
    flags=<optimized out>, pp_stack=<optimized out>, func=<optimized out>)
    at ../Python/ceval.c:4334
#73 PyEval_EvalFrameEx () at ../Python/ceval.c:2706
#74 0x00000000004df2f8 in PyEval_EvalCodeEx (closure=<optimized out>,
    defcount=<optimized out>, defs=<optimized out>, kwcount=<optimized out>,
    kws=<optimized out>, argcount=<optimized out>, args=<optimized out>,
    locals=<optimized out>, globals=<optimized out>, co=<optimized out>)
    at ../Python/ceval.c:3253
#75 function_call.lto_priv () at ../Objects/funcobject.c:526
#76 0x00000000004c768f in PyObject_Call (kw=<optimized out>,
    arg=<optimized out>, func=<optimized out>) at ../Objects/abstract.c:2529
#77 ext_do_call (nk=<optimized out>, na=<optimized out>,
    flags=<optimized out>, pp_stack=<optimized out>, func=<optimized out>)
    at ../Python/ceval.c:4334
#78 PyEval_EvalFrameEx () at ../Python/ceval.c:2706
#79 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#80 0x00000000004c5754 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#81 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#82 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#83 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#84 0x00000000004c5754 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#85 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#86 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#87 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#88 0x00000000004c5754 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#89 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#90 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#91 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#92 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#93 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#94 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#95 0x00000000004c5754 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4117
#96 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#97 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#98 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#99 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#100 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#101 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#102 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#103 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#104 0x00000000004c4422 in fast_function (nk=<optimized out>,
    na=<optimized out>, n=<optimized out>, pp_stack=<optimized out>,
    func=<optimized out>) at ../Python/ceval.c:4107
#105 call_function (oparg=<optimized out>, pp_stack=<optimized out>)
    at ../Python/ceval.c:4042
#106 PyEval_EvalFrameEx () at ../Python/ceval.c:2667
#107 0x00000000004c2509 in PyEval_EvalCodeEx () at ../Python/ceval.c:3253
#108 0x00000000004fbdff in PyEval_EvalCode (
    locals={'fp': <file at remote 0x7fc8a77fe1e0>, 'demandimport': <module at remote 0x7fc8a76da1d8>, '__builtins__': <module at remote 0x7fc8a77dcb08>, 'mercurial': <module at remote 0x7fc8a76d2e88>, '__file__': '/usr/bin/hg', 'libdir': '@LIBDIR@', '__package__': None, 'sys': <module at remote 0x7fc8a77dcbb0>, '__name__': '__main__', 'os': <module at remote 0x7fc8a77b8d00>, '__doc__': None},
    globals={'fp': <file at remote 0x7fc8a77fe1e0>, 'demandimport': <module at remote 0x7fc8a76da1d8>, '__builtins__': <module at remote 0x7fc8a77dcb08>, 'mercurial': <module at remote 0x7fc8a76d2e88>, '__file__': '/usr/bin/hg', 'libdir': '@LIBDIR@', '__package__': None, 'sys': <module at remote 0x7fc8a77dcbb0>, '__name__': '__main__', 'os': <module at remote 0x7fc8a77b8d00>, '__doc__': None},
    co=0x7fc8a771aab0) at ../Python/ceval.c:667
#109 run_mod.lto_priv () at ../Python/pythonrun.c:1370
#110 0x00000000004f1752 in PyRun_FileExFlags () at ../Python/pythonrun.c:1356
#111 0x00000000004f0894 in PyRun_SimpleFileExFlags ()
    at ../Python/pythonrun.c:948
#112 0x0000000000492eb3 in Py_Main () at ../Modules/main.c:640
#113 0x00007fc8a6769b45 in __libc_start_main (main=0x492970 <main>, argc=4,
    argv=0x7fff745f0748, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7fff745f0738) at libc-start.c:287
#114 0x000000000049289f in _start ()

No such problem on another Debian/unstable machine.

#756018#10
Date:
2014-08-14 07:38:05 UTC
From:
To:
O Fri, Jul 25, 2014 at 03:22:05PM +0200, Vincent Lefevre wrote:

Looks like the network died. Can you try again with --debug?

#756018#15
Date:
2014-08-14 07:38:05 UTC
From:
To:
O Fri, Jul 25, 2014 at 03:22:05PM +0200, Vincent Lefevre wrote:

Looks like the network died. Can you try again with --debug?

#756018#20
Date:
2014-08-14 09:51:32 UTC
From:
To:
Perhaps, but in this case, there should be a timeout and an error
message.

In case the network didn't completely die, hg could also give progress
information (see what curl and apt-get do, for instance) and tell how
many seconds (when this is large enough) since it last received data
(a bit like mosh).

Giving absolutely no information is bad for the user, who cannot know
what to do: Wait? Abort?

Unfortunately I can't reproduce the problem.

#756018#25
Date:
2014-08-14 17:11:18 UTC
From:
To:
The network must have been still working but very slowly. preventing the
process to actually abort.

You can enable a progress bar (hg help progress for details) that would
do exactly that.

#756018#30
Date:
2014-08-25 16:28:23 UTC
From:
To:
I can't reproduce it either.  If you can't reproduce it any more, can
you close the bug?

Cheers,
Javi

#756018#35
Date:
2014-08-25 16:41:39 UTC
From:
To:
I could reproduce it twice. Once with the progress indicator
and without --debug:

$ hg clone http://dev.mutt.org/hg/mutt
destination directory: mutt
requesting all changes
adding changesets
changesets [      <=>                                                    ] 1995

and nothing else occurred. And just after with --debug:

[...]
changesets: 3327 chunks
add changeset 52f275f851bd
changesets: 3328 chunks
add changeset d658d3a04de6
changesets: 3329 chunks
add changeset c5c16d6247e1
changesets: 3330 chunks
add changeset 745d2cdfc49f
changesets: 3331 chunks
add changeset 4148640afa3f
changesets: 3332 chunks
add changeset 99ee02d95b96
changesets: 3333 chunks
add changeset 30db3865b517
changesets: 3334 chunks

And it stopped there.

The 3rd time was OK.

#756018#40
Date:
2014-08-25 21:04:14 UTC
From:
To:
In that case, can you file a bug upstream?

http://bz.selenic.com/enter_bug.cgi

I sometimes do that for bugs that I can reproduce but in this case I
don't think I'd be able to reply to questions from developers if they
had any.

Cheers,
Javi

#756018#45
Date:
2014-09-01 10:31:07 UTC
From:
To:
Control: forwarded -1 http://bz.selenic.com/show_bug.cgi?id=4350
Control: tags -1 upstream

Done.