ocaml / opam

opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.
https://opam.ocaml.org
Other
1.24k stars 359 forks source link

opam HEAD, can't upgrade anything anymore. #1411

Closed dbuenzli closed 10 years ago

dbuenzli commented 10 years ago
> opam upgrade
The following actions will be performed:
 - recompile react.1.1.0*                          [upstream changes]
 - recompile gg.0.8.0*                             [upstream changes]
 - upgrade   optcomp from 1.5 to 1.6
 - recompile pkgopkg.repo                          [upstream changes]
 - upgrade   ocamlmod from 0.0.4 to 0.0.7
 - upgrade   ocamlnet from 3.7.3 to 3.7.4
 - recompile fut.unreleased*                       [uses react]
 - recompile lit.unreleased*                       [uses gg]
=== ↻ 5   ↑ 3 ===
Do you want to continue ? [Y/n] Y

🐫                   --- Synchronizing package archives ---
fut.unreleased Synchronizing with /Users/dbuenzli/sync/repos/fut
gg.0.8.0   Synchronizing with /Users/dbuenzli/sync/repos/gg
lit.unreleased Synchronizing with /Users/dbuenzli/sync/repos/lit
[ERROR] # opam-version    1.2.0
# os              darwin
opam: "wait" failed: Interrupted system call
avsm commented 10 years ago

also see #1404

dbuenzli commented 10 years ago

Yeah everything's broken it seems.

> opam remove -a
The following actions will be performed:
 - remove    ocamlnet.3.7.3                        [uses cryptokit]
 - remove    fix.20130611                          [upstream changes]
 - remove    bitstring.2.0.4                       [upstream changes]
 - remove    pprint.20140424                       [upstream changes]
 - remove    ospec.0.3.2                           [upstream changes]
 - remove    atdgen.1.3.1                          [uses yojson]
 - remove    fileutils.0.4.4                       [uses ounit]
 - remove    cryptokit.1.9                         [upstream changes]
 - remove    uint.1.1.1                            [upstream changes]
 - remove    ocamlify.0.0.1                        [upstream changes]
 - remove    functory.0.5                          [upstream changes]
 - remove    camomile.0.8.5                        [upstream changes]
 - remove    optcomp.1.5                           [upstream changes]
 - remove    yojson.1.1.8                          [uses easy-format, cppo]
 - remove    atd.1.1.2                             [uses menhir, easy-format]
 - remove    ounit.2.0.0                           [upstream changes]
 - remove    cppo.0.9.3                            [upstream changes]
 - remove    biniou.1.0.9                          [uses easy-format]
 - remove    menhir.20130912                       [upstream changes]
 - remove    easy-format.1.0.2                     [upstream changes]
=== ⊘ 20 ===
Do you want to continue ? [Y/n] Y

🐫                   --- Synchronizing package archives ---
[ERROR] # opam-version    1.2.0
# os              darwin
opam: "wait" failed: Interrupted system call
dbuenzli commented 10 years ago

So made random checkouts until I found one where the problem didn't show up. So with 19fe5230f1cd4b8faf88728 the problem doesn't occur and it shows up at least from ea9847623d02 on.

rdicosmo commented 10 years ago

That's great! Now you can use git bisect to precisely nail down the issue in just a few trials http://git-scm.com/book/en/Git-Tools-Debugging-with-Git

The problem does not show up here on Debian (nor on the Ubuntu used in Travis), by the way: @asvm any chance we can get a travis instance with OSX?

On Sun, May 18, 2014 at 04:23:11AM -0700, Daniel Bünzli wrote:

So made random checkouts until I found one where the problem didn't show up. So with 19fe523 the problem doesn't occur and it shows up at least from ea98476 on.

— Reply to this email directly or view it on GitHub.*

dbuenzli commented 10 years ago

Yeah, the problem with bisect is always to be able to actually setup the bug showing script and that sometimes checkouts don't build which leads to false positive. It may be quicker to have a look at:

 git show 19fe523..ea98476

To me it seems like an EINTR used to be handled and is no longer.

rdicosmo commented 10 years ago

Well, in this particular case, I wouldn't set up a script, just do the test manually (4 or 5 steps maximum I'd say) ...

Unfortunately, I dont have an OSX machine to test with

On Sun, May 18, 2014 at 05:59:10AM -0700, Daniel Bünzli wrote:

Yeah, the problem with bisect is always to be able to actually setup the bug showing script and that sometimes checkouts don't build which leads to false positive. It may be quicker to have a look at:

git show 19fe523..ea98476

To me it seems like an EINTR used to be handled and is no longer.

— Reply to this email directly or view it on GitHub.*

Roberto Di Cosmo


Professeur En delegation a l'INRIA PPS E-mail: roberto@dicosmo.org Universite Paris Diderot WWW : http://www.dicosmo.org Case 7014 Tel : ++33-(0)1-57 27 92 20 5, Rue Thomas Mann
F-75205 Paris Cedex 13 Identica: http://identi.ca/rdicosmo

FRANCE. Twitter: http://twitter.com/rdicosmo

Attachments: MIME accepted, Word deprecated

http://www.gnu.org/philosophy/no-word-attachments.html

Office location:

Bureau 3020 (3rd floor) Batiment Sophie Germain Avenue de France

Metro Bibliotheque Francois Mitterrand, ligne 14/RER C

GPG fingerprint 2931 20CE 3A5A 5390 98EC 8BFC FCCA C3BE 39CB 12D3

AltGr commented 10 years ago

It seems to be a fix in dose that is causing the problem: dose-lib is now setting a signal handler on EINTR without restoring it afterwards. I wonder why this isn't a problem on Linux though -- different signal priorities ?

AltGr commented 10 years ago

Could you try out https://github.com/ocaml/opam/pull/1417 and check if it fixes it ?

dbuenzli commented 10 years ago

Yes it seems to fix it.