Re: [mercurial-ja:1662] Re: [hg] リモートのサーバからcloneすると途中で強制終了される

519 views
Skip to first unread message
Message has been deleted
Message has been deleted

Katsunori FUJIWARA

unread,
Feb 10, 2017, 4:23:07 AM2/10/17
to mercurial-ja
藤原です。

> 最近リモートのリポジトリからのクローンが不気味に速い気がしたので、
> もしかして4.1で行われた高速化の修正が効いているのかなと思いサー
> バ側4.0.1と4.1を切り替えて速度比較を行おうと考えました。
>
> まず、準備でサーバー側のバージョンを確認したところ 4.0.1
>
> 速く感じたのは気のせいなのかと思いましたが、4.0.1でデータを取っ
> て4.1と比べてみることに。

4.1 で利用可能になった zstd の影響を想定されていたのだと思いますが、
4.0 の時点でも以下のような性能改善が適用されていますから、その辺の
影響もあるのだと思います (前者はクライアントサイドのみの改善ですが)

https://groups.google.com/d/msg/mercurial-ja/PwPcqV8SmDw/uZ2Ui3F-BAAJ

- Performance of client-side application of bundle data for
generaldelta repos has been significantly improved. This makes 'hg
clone', 'hg pull', and 'hg unbundle' operations faster. Cloning the
Firefox repository now consumes 70+s less CPU time and completes
over a minute faster (when not network or I/O bound).

- The storage and transfer of changeset data has been optimized to
improve read performance



2017年2月10日 14:39 ohira <shin....@gmail.com>:

>> --tracebackを付けて実行してみました。

[snip]

> [shin@faith] ~/tmp% time hg clone --traceback
> ssh://h...@escm11.mxfw.net/trunk/sps_25 sps_25.11
> 全リビジョンを取得中
> リビジョンを追加中
> マニフェストを追加中
> ファイルの変更を追加中
> 6664 個のリビジョン(22823 の変更を 12112 ファイルに適用)を追加 (+30個のヘッド)
> ブランチ default へ更新中
> 更新中 [=========================================================> ]
> 11300/11716 01秒強制終了されました!
> 強制終了されました!
> 強制終了されました!
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line
> 208, in _runcatchfunc
> return _dispatch(req)
> File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line
> 811, in _dispatch
> cmdpats, cmdoptions)
> File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
> ret = _runcommand(ui, options, cmd, d)
> File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
> return cmdfunc()
> File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
> d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
> File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
> return func(*args, **kwargs)
> File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 1560, in clone
> shareopts=opts.get('shareopts'))
> File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 667, in clone
> _update(destrepo, uprev)
> File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
> stats = updaterepo(repo, node, False)
> File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
> labels=['working copy', 'destination'])
> File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
> stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
> File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
> for i, item in prog:
> File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
> cleanup()
> File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
> os.kill(os.getpid(), -status)
> OSError: [Errno 22] Invalid argument
> 中止: Invalid argument

clone 処理自体は完了していて、作業領域の更新における異常終了ですね。

複数プロセスでの「平行更新」の最後に、プロセスの刈り取りをしようと
して失敗しているみたいです。

4.1 クライアントで以下を確認してもらえますか?

(1) -U/--noupdate 付き clone で正常終了するか確認
(2) (1) での clone 後に hg update 単体実行が正常終了するか確認
※ 4.1 で (1) が失敗する場合、4.0 で (1) を実施後に 4.1 で (2) を確認

ちなみに、4.1 での hg clone における異常終了の再現率は 100% でしょ
うか?

この辺の平行プロセスの扱い周りは、4.0 ~ 4.1 にかけて chg 絡みで
Jun Wu 氏と西原さんが色々手を入れているみたいですが、何か思い当た
る点はあります? > 西原さん


--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)
Message has been deleted

Katsunori FUJIWARA

unread,
Feb 10, 2017, 4:49:29 AM2/10/17
to mercurial-ja
藤原です。

2017年2月10日 18:36 ohira <shin....@gmail.com>:

> 回答ありがとうございます。
> おおひらです。
>>
>>
>> clone 処理自体は完了していて、作業領域の更新における異常終了ですね。
>>
>> 複数プロセスでの「平行更新」の最後に、プロセスの刈り取りをしようと
>> して失敗しているみたいです。
>>
>> 4.1 クライアントで以下を確認してもらえますか?
>
> 13日に確認いたします。

実行環境に関する以下の情報の提供もお願いします。

- OS (バージョン情報込み)
- CPU 数
- Python ("python -V" 出力)

>>
>> (1) -U/--noupdate 付き clone で正常終了するか確認
>> (2) (1) での clone 後に hg update 単体実行が正常終了するか確認
>> ※ 4.1 で (1) が失敗する場合、4.0 で (1) を実施後に 4.1 で (2) を確認
>>
>> ちなみに、4.1 での hg clone における異常終了の再現率は 100% でしょ
>> うか?
>
> 5回やりましたが、毎回なので多分100%だと思います。

これで (2) が常時失敗するようだと、かなり絞り込めそうなのですが……

>>
>>
>> この辺の平行プロセスの扱い周りは、4.0 ~ 4.1 にかけて chg 絡みで
>> Jun Wu 氏と西原さんが色々手を入れているみたいですが、何か思い当た
>> る点はあります? > 西原さん
>>
> --
> from Mercurial 日本語コミュニティ <mercur...@googlegroups.com>
> ※ ヘルプ表示は http://groups.google.com/group/mercurial-ja?hl=ja
> ---
> このメールは Google グループのグループ「mercurial-ja」に登録しているユーザーに送られています。
> このグループから退会し、グループからのメールの配信を停止するには mercurial-ja...@googlegroups.com
> にメールを送信してください。
> その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Katsunori FUJIWARA

unread,
Feb 13, 2017, 3:57:28 AM2/13/17
to mercurial-ja
藤原です。

情報採取ありがとうございます。

2017年2月13日 17:22 ohira <shin....@gmail.com>:

[snip]

> [shin@faith] ~/work% time hg clone ssh://h...@escm11.mxfw.net/trunk/sps_25 sps_25.2 --noupdate
> 全リビジョンを取得中
> リビジョンを追加中
> マニフェストを追加中
> ファイルの変更を追加中
> 6721 個のリビジョン(22891 の変更を 12112 ファイルに適用)を追加 (+34個のヘッド)
> 55.022u 8.530s 1:10.87 89.6% 2010+588k 1152+54737io 0pf+0w
> [shin@faith] ~/work% (cd sps_25.2; hg update)
> 更新中 [===========================================================> ]
> 11529/11716 01秒強制終了されました!
> 強制終了されました!
> 強制終了されました!
> 中止: Invalid argument

やはり作業領域の update 処理過程で例外終了してますね。

再現性がほぼ 100% みたいですから、おそらくは実行環境の違
い (FreeBSD 固有挙動) に由来する問題ではないかと。あるいは、
Python 処理系の特定の版のみに固有の挙動とか?

プロセス管理周りで何か思い当たる節はあります? > 西原さん

そちらの環境では、当面 4.1 版の使用を見合わせるのが妥当ですかねぇ。

もしかしたら、設定ファイルに以下の設定を書いておくことで回避できる
可能性もありますが、バグが修正された後で設定を破棄したりする手間を
考えると、仮に障害回避できるとしても、あまり得策ではない気が……

[worker]
numcpus = 1

[snip]

> [shin@faith] ~/work% ( cd sps_25.2 ; hg update )
> shop/qrcode_php/qrcode_data/rsc54.dat: 管理対象外ファイルに差分あり
> 中止: 指定リビジョンでの記録内容と異なる管理対象外ファイルが存在します

こちらは、直前の hg update が途中で異常終了していることが原因のエ
ラーなので、とりあえず無視してください。

> [shin@faith] ~/work%
> This site is powered by Kallithea 0


--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)
Message has been deleted

Yuya Nishihara

unread,
Feb 13, 2017, 10:28:14 AM2/13/17
to mercur...@googlegroups.com, Katsunori FUJIWARA
On Mon, 13 Feb 2017 17:57:26 +0900, Katsunori FUJIWARA wrote:
> > [shin@faith] ~/work% time hg clone ssh://h...@escm11.mxfw.net/trunk/sps_25 sps_25.2 --noupdate
> > 全リビジョンを取得中
> > リビジョンを追加中
> > マニフェストを追加中
> > ファイルの変更を追加中
> > 6721 個のリビジョン(22891 の変更を 12112 ファイルに適用)を追加 (+34個のヘッド)
> > 55.022u 8.530s 1:10.87 89.6% 2010+588k 1152+54737io 0pf+0w
> > [shin@faith] ~/work% (cd sps_25.2; hg update)
> > 更新中 [===========================================================> ]
> > 11529/11716 01秒強制終了されました!
> > 強制終了されました!
> > 強制終了されました!
> > 中止: Invalid argument
>
> やはり作業領域の update 処理過程で例外終了してますね。

何かで EINVAL が起きていますね、恐らく。

a) --traceback つきで実行してもらえますか?
b) hg clone --noupdate の後、 hg update した場合はどうですか?
c) .ssh/config で何か小細工はしていませんか?

それから、 LANG=C でメッセージを英語にしていただいた方が、ソースコードを
追いやすいです。

> 再現性がほぼ 100% みたいですから、おそらくは実行環境の違
> い (FreeBSD 固有挙動) に由来する問題ではないかと。あるいは、
> Python 処理系の特定の版のみに固有の挙動とか?

hg debuginstall の結果は? (Python のバージョンが欲しい)

> プロセス管理周りで何か思い当たる節はあります? > 西原さん

worker.py のプロセスの待ち方などが 4.0 以降で変わっています。全体的に、より
厳密にエラー処理をするようになっています。

Katsunori FUJIWARA

unread,
Feb 13, 2017, 10:46:53 AM2/13/17
to Yuya Nishihara, mercurial-ja
藤原です。

2017年2月14日 0:28 Yuya Nishihara <yu...@tcha.org>:

> On Mon, 13 Feb 2017 17:57:26 +0900, Katsunori FUJIWARA wrote:

>> > [shin@faith] ~/work% time hg clone ssh://h...@escm11.mxfw.net/trunk/sps_25 sps_25.2 --noupdate
>> > 全リビジョンを取得中
>> > リビジョンを追加中
>> > マニフェストを追加中
>> > ファイルの変更を追加中
>> > 6721 個のリビジョン(22891 の変更を 12112 ファイルに適用)を追加 (+34個のヘッド)
>> > 55.022u 8.530s 1:10.87 89.6% 2010+588k 1152+54737io 0pf+0w
>> > [shin@faith] ~/work% (cd sps_25.2; hg update)
>> > 更新中 [===========================================================> ]
>> > 11529/11716 01秒強制終了されました!
>> > 強制終了されました!
>> > 強制終了されました!
>> > 中止: Invalid argument
>>
>> やはり作業領域の update 処理過程で例外終了してますね。
>
> 何かで EINVAL が起きていますね、恐らく。
>
> a) --traceback つきで実行してもらえますか?

おおひらさんの以前のメールに添付されていたものは、以下のような感じ
ですね。作業領域の更新での EINVAL 発生です。
https://groups.google.com/d/msg/mercurial-ja/cWgITk4MNpM/neQnOPo_CwAJ

想定外の status 値が残ってしまっている?


> b) hg clone --noupdate の後、 hg update した場合はどうですか?

hg clone --noupdate は成功、その後の hg update は EINVAL で異常終
了するみたいです。

https://groups.google.com/d/msg/mercurial-ja/cWgITk4MNpM/3sI5its1DAAJ

> c) .ssh/config で何か小細工はしていませんか?
>
> それから、 LANG=C でメッセージを英語にしていただいた方が、ソースコードを
> 追いやすいです。
>
>> 再現性がほぼ 100% みたいですから、おそらくは実行環境の違
>> い (FreeBSD 固有挙動) に由来する問題ではないかと。あるいは、
>> Python 処理系の特定の版のみに固有の挙動とか?
>
> hg debuginstall の結果は? (Python のバージョンが欲しい)

Python 2.7.12 とのことです。

https://groups.google.com/d/msg/mercurial-ja/cWgITk4MNpM/7Nmk9DQbDAAJ

>> プロセス管理周りで何か思い当たる節はあります? > 西原さん
>
> worker.py のプロセスの待ち方などが 4.0 以降で変わっています。全体的に、より
> 厳密にエラー処理をするようになっています。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)
Message has been deleted
Message has been deleted

Yuya Nishihara

unread,
Feb 14, 2017, 7:50:43 AM2/14/17
to mercur...@googlegroups.com, ohira
On Mon, 13 Feb 2017 21:32:13 -0800 (PST), ohira wrote:
> また OS も PCBSD 以外に CentOSでも試したところ 4.0.2 ではCentOSで正常にclone できましたが
> 4.1 ではCentOSでも正常動作しませんでした。

リポジトリ依存のような気がします。 --config worker.numcpus=1 で同様の問題は
起きますか?

% export LC_MESSAGES=C

% hg update --config worker.numcpus=1 --traceback
% hg update --config worker.numcpus=1 --traceback null

% export HGRCPATH=/dev/null
% hg update --config worker.numcpus=1 --traceback
% hg update --config worker.numcpus=1 --traceback null

> 2017年2月14日火曜日 14時01分56秒 UTC+9 ohira:
> > [shin@faith] ~/work% hg clone sps_25.6 sps_25.7
> > ブランチ default へ更新中
> > 更新中 [=========================================================> ] 11329/11716 01秒強制終了されました!
> > 強制終了されました!
> > 強制終了されました!
> > 中止: Invalid argument

ここの "Invalid argument" は変ですが、本質的な問題は、最初の子プロセスで
起きていると思われます。
Message has been deleted

Yuya Nishihara

unread,
Feb 17, 2017, 7:47:02 AM2/17/17
to mercur...@googlegroups.com, ohira
On Thu, 16 Feb 2017 21:54:07 -0800 (PST), ohira wrote:
> [shin@faith] ~/tmp% (cd sps_25.01; hg update)
> 更新中 [========================================================> ] 11029/11717 01秒強制終了されました!
> 強制終了されました!
> 強制終了されました!
> 中止: Invalid argument
> [shin@faith] ~/tmp% ( cd sps_25.01 ; hg update --config worker.numcpus=1)
> setup/template/html/branch-ibf-input.html: 管理対象外ファイルに差分あり
> 中止: 指定リビジョンでの記録内容と異なる管理対象外ファイルが存在します

--config worker.numcpus=1 をクリーンな状態で実行した結果を下さい。それから、
メッセージを英語にしていただけると助かります。

% hg clone ... sps_25 --noupdate
% cd sps_25
Message has been deleted
Message has been deleted
Message has been deleted

ohira

unread,
Feb 20, 2017, 1:23:37 AM2/20/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org
[shin@faith] ~/tmp/sps25.07% 
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=1 --traceback null
0 files updated, 0 files merged, 11717 files removed, 0 files unresolved                
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=1 --traceback 
11717 files updated, 0 files merged, 0 files removed, 0 files unresolved                
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=1 --traceback null
0 files updated, 0 files merged, 11717 files removed, 0 files unresolved
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=1 --traceback
11717 files updated, 0 files merged, 0 files removed, 0 files unresolved                
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=2 --traceback null
0 files updated, 0 files merged, 11717 files removed, 0 files unresolved
[shin@faith] ~/tmp/sps25.07% env LC_ALL=C hg update --config worker.numcpus=2 --traceback
updating [========================================================>   ] 11200/11717 01skilled!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/extensions.py", line 223, in closure
    return func(*(args + a), **kw)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/hgext/mq.py", line 3541, in mqcommand
    return orig(ui, repo, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/sps25.07% 

Katsunori FUJIWARA

unread,
Feb 20, 2017, 3:10:01 AM2/20/17
to mercurial-ja, ohira, Yuya Nishihara
藤原です。

送って頂いた実行結果を見るに、"--config worker.numcpus=1" では異常
終了しないことは確実みたいですが、それ以外のケースだと、異常終了す
るけど再現率は必ずしも 100% ではない、という認識で合っていますか?

なお、worker.numcpus 設定がない場合、実行並列度は以下の式で算出さ
れます。

min(max(論理CPU数, 4), 32)

https://www.mercurial-scm.org/repo/hg/file/4.1/mercurial/worker.py#l54

送って頂いた情報によれば、そちらの環境は論理CPU数 = 2 ですから、デ
フォルトの並列度は 4 で実行されることになります。

なので、worker.numcpus 設定の候補は 1 or 4 のみで十分かと。まぁ、
2 の方が再現率が高ければ、1 or 2 でも良いと思いますが (笑)


また、以前西原さんが「リポジトリ依存」の可能性を言及していましたが、
例えば Mercurial のリポジトリ (https://www.mercurial-scm.org/repo/hg
あるいはそのローカル clone) からの hg clone や、hg clone --noupdate
後の worker.numcpus >= 2 での update 等でも異常終了するのでしょう
か?


ちなみに、Python のメッセージ翻訳処理は LANGUAGE 環境変数も参照し
ている (+ LC_ALL よりも優先度が高い) ので、メッセージの英語化は、
念のため "env LANGUAGE= LC_ALL=C" としておいた方が良いかも。

ohira

unread,
Feb 20, 2017, 4:04:50 AM2/20/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org
おおひらです。

3.9, 4.0.1, 4.0.2 などでは発生しませんので100%発生するということはありません。
発生するのは4.1だけのようです。

ただし4.1でもnumcpusを1に設定した場合は発生しません。

(4.1以前のものでもnumcpusを4以上にすると起こるかもしれないからテストしてみました)

2017年2月20日月曜日 17時10分01秒 UTC+9 FUJIWARA Katsunori:

ohira

unread,
Feb 20, 2017, 4:21:55 AM2/20/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org
[shin@faith] ~/tmp% hg clone https://www.mercurial-scm.org/repo/hg
複製先ディレクトリ: hg
全リビジョンを取得中
リビジョンを追加中
マニフェストを追加中                                                                    
ファイルの変更を追加中                                                                  
31014 個のリビジョン(57725 の変更を 2550 ファイルに適用)を追加                          
ブックマーク @ への更新中
更新中 [===============================================>                    ]  924/1294強制終了されました!

強制終了されました!
強制終了されました!
中止: Invalid argument
[shin@faith] ~
/tmp% 
[shin@faith] ~/
tmp% rm -rf hg
[shin@faith] ~/tmp% hg clone https://www.mercurial-scm.org/repo/hg --config worker.numcpus=1
複製先ディレクトリ: hg
全リビジョンを取得中
リビジョンを追加中
マニフェストを追加中                                                                    
ファイルの変更を追加中                                                                  
31014 個のリビジョン(57725 の変更を 2550 ファイルに適用)を追加                          
ブックマーク @ への更新中
ファイルの更新数 1294 マージ数 0 削除数 0 衝突未解消数 0                          
[shin@faith] ~/tmp%

Katsunori FUJIWARA

unread,
Feb 20, 2017, 4:26:19 AM2/20/17
to mercurial-ja, ohira, Yuya Nishihara
藤原です。

2017年2月20日 18:04 ohira <shin....@gmail.com>:

> おおひらです。
>
>
> 3.9, 4.0.1, 4.0.2 などでは発生しませんので100%発生するということ
> はありません。発生するのは4.1だけのようです。

ここでの "100%" は、"Mercurial 4.1 でなら 100%" の意味で使用してます。

実行結果に Mercurial のバージョン番号が明記されていなかったので、
本日付けで投函された実行結果は、全て Mercurial 4.1 での実行結果だ
と想定していたのですが、この認識は合っていますか?

> ただし4.1でもnumcpusを1に設定した場合は発生しません。
>
> (4.1以前のものでもnumcpusを4以上にすると起こるかもしれないからテストしてみました)
>
> 2017年2月20日月曜日 17時10分01秒 UTC+9 FUJIWARA Katsunori:
>>
>> 藤原です。
>>
>> 送って頂いた実行結果を見るに、"--config worker.numcpus=1" では異常
>> 終了しないことは確実みたいですが、それ以外のケースだと、異常終了す
>> るけど再現率は必ずしも 100% ではない、という認識で合っていますか?
>>
>> なお、worker.numcpus 設定がない場合、実行並列度は以下の式で算出さ
>> れます。
>>
>> min(max(論理CPU数, 4), 32)
>>
>> https://www.mercurial-scm.org/repo/hg/file/4.1/mercurial/worker.py#l54
>>
>> 送って頂いた情報によれば、そちらの環境は論理CPU数 = 2 ですから、デ
>> フォルトの並列度は 4 で実行されることになります。
>>
>> なので、worker.numcpus 設定の候補は 1 or 4 のみで十分かと。まぁ、
>> 2 の方が再現率が高ければ、1 or 2 でも良いと思いますが (笑)
>>
>>
>> また、以前西原さんが「リポジトリ依存」の可能性を言及していましたが、
>> 例えば Mercurial のリポジトリ (https://www.mercurial-scm.org/repo/hg
>> あるいはそのローカル clone) からの hg clone や、hg clone --noupdate
>> 後の worker.numcpus >= 2 での update 等でも異常終了するのでしょう
>> か?
>>
>>
>> ちなみに、Python のメッセージ翻訳処理は LANGUAGE 環境変数も参照し
>> ている (+ LC_ALL よりも優先度が高い) ので、メッセージの英語化は、
>> 念のため "env LANGUAGE= LC_ALL=C" としておいた方が良いかも。


--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Katsunori FUJIWARA

unread,
Feb 20, 2017, 4:38:20 AM2/20/17
to mercurial-ja
藤原です。

うーむ、実行対象リポジトリ固有の問題ではなさそうですねぇ。

一応念のため、こちらの実行確認でも、メッセージの英語化をお願いします。

ちなみに、 https://www.mercurial-scm.org/repo/hg の clone 上での
update は、CentOS 上で実行してもやっぱり異常終了します?


2017年2月20日 18:21 ohira <shin....@gmail.com>:

ohira

unread,
Feb 20, 2017, 4:38:23 AM2/20/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org
おおひらです。

4.1 で numcpuが2以上の場合は100%発生
4.1 でも numcpuが1だと100%発生しない
3.9, 4.0.1, 4.0.2では、100%発生しない
 
ここでの "100%" は、"Mercurial 4.1 でなら 100%" の意味で使用してます。

実行結果に Mercurial のバージョン番号が明記されていなかったので、
本日付けで投函された実行結果は、全て Mercurial 4.1 での実行結果だ
と想定していたのですが、この認識は合っていますか?
発生したのは4.1で、発生しなかったのは4.0.2 です。
 

> ただし4.1でもnumcpusを1に設定した場合は発生しません。

 

Yuya Nishihara

unread,
Feb 20, 2017, 8:21:32 AM2/20/17
to mercur...@googlegroups.com, Katsunori FUJIWARA
On Mon, 20 Feb 2017 18:38:18 +0900, Katsunori FUJIWARA wrote:
> うーむ、実行対象リポジトリ固有の問題ではなさそうですねぇ。
>
> 一応念のため、こちらの実行確認でも、メッセージの英語化をお願いします。
>
> ちなみに、 https://www.mercurial-scm.org/repo/hg の clone 上での
> update は、CentOS 上で実行してもやっぱり異常終了します?

HGRCPATH=/dev/null でユーザー設定を全て無効化した状態でも試していただけ
ますか?

私の環境(Debian sid)では問題が起きたことがないから、何が違うのか気になります。

ohira

unread,
Feb 21, 2017, 7:40:37 PM2/21/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
[shin@faith] ~/tmp% hg clone hg hg.01
ブックマーク @ への更新中
強制終了されました!
強制終了されました!
強制終了されました!
中止: Invalid argument
[shin@faith] ~/tmp% env LC_ALL=C hg clone hg hg.01
abort: destination 'hg.01' is not empty
[shin@faith] ~/tmp% env LC_ALL=C hg clone hg hg.02
updating to bookmark @
killed!
killed!
killed!
abort: Invalid argument
[shin@faith] ~/tmp% env HGRCPATH=/dev/null env LC_ALL=C hg clone hg hg.03
updating to bookmark @
killed!
killed!
killed!
abort: Invalid argument
[shin@faith] ~/tmp% env HGRCPATH=/dev/null env LC_ALL=C hg clone hg hg.04 --noupdate
[shin@faith] ~/tmp% (cd hg.04; env HGRCPATH=/dev/null env LC_ALL=C hg update)
killed!
killed!
killed!
abort: Invalid argument
[shin@faith] ~/tmp%

ohira

unread,
Feb 21, 2017, 7:48:38 PM2/21/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org

HGRCPATH=/dev/null でユーザー設定を全て無効化した状態でも試していただけ
ますか?

私の環境(Debian sid)では問題が起きたことがないから、何が違うのか気になります。
HGRCPATHを変更しても状況は変わりませんでした。

PCBSDでのCPU数を減らした再現テストをお願いできませんでしょうか? 

ohira

unread,
Feb 21, 2017, 9:01:14 PM2/21/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org

送って頂いた実行結果を見るに、"--config worker.numcpus=1" では異常 
終了しないことは確実みたいですが、それ以外のケースだと、異常終了す 
るけど再現率は必ずしも 100% ではない、という認識で合っていますか? 

なお、worker.numcpus 設定がない場合、実行並列度は以下の式で算出さ 
れます。 

    min(max(論理CPU数, 4), 32) 

    https://www.mercurial-scm.org/repo/hg/file/4.1/mercurial/worker.py#l54 

送って頂いた情報によれば、そちらの環境は論理CPU数 = 2 ですから、デ 
フォルトの並列度は 4 で実行されることになります。 
 
いただいた情報と今までのテスト結果を元に上記の部分を修正したところ
4.1 でもエラーが発生しなくなりました。

ohira

unread,
Feb 21, 2017, 9:03:14 PM2/21/17
to mercurial-ja, shin....@gmail.com, yu...@tcha.org
diff -u worker.py.org worker.py.new
--- worker.py.org       2017-02-22 10:48:54.239883533 +0900
+++ worker.py.new       2017-02-22 10:52:31.067867171 +0900
@@ -51,7 +51,7 @@
                 
return n
         
except ValueError:
             
raise error.Abort(_('number of cpus must be an integer'))
-    return min(max(countcpus(), 4), 32)
+    return min(max(countcpus()-1,1), 32)
 
 
if pycompat.osname == 'posix':
     _startupcost
= 0.01



2017年2月22日水曜日 11時01分14秒 UTC+9 ohira:

Katsunori FUJIWARA

unread,
Feb 22, 2017, 3:01:10 AM2/22/17
to mercurial-ja
藤原です。

2017年2月22日 9:48 ohira <shin....@gmail.com>:
以前のメールでは「CentOS でも (Mercurial 4.1 で) 同じ現象が発生」
とのことでしたが、当該環境に関して CentOS/Python のバージョン、論
理 CPU 数の情報を頂けますか?

また、Mercurial 4.1 での障害再現性に関して、以下のコマンドを5回程
度繰り返した場合、(ほぼ)常時再現 or 時々再現のいずれでしょうか?

$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip

"--config worker.numcpus=XXXX" 指定は (1) 指定なしと (2) 2 指定で
確認して頂けますか?

現象が Mercurial 自身のリポジトリでも再現可能な場合は、Mercurial
自身のリポジトリを用いた確認のみで結構です。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Katsunori FUJIWARA

unread,
Feb 22, 2017, 3:53:46 AM2/22/17
to mercurial-ja
藤原です。

補足。

"hg update" の繰り返し実行の際には、
直前の実行失敗の影響を受けないように、
-C 付きで実行して下さい。


2017年2月22日(水) 17:01 Katsunori FUJIWARA <flying...@gmail.com>:
--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Feb 22, 2017, 4:14:22 AM2/22/17
to mercurial-ja
おおひらです。

2017年2月22日水曜日 17時01分10秒 UTC+9 FUJIWARA Katsunori:
藤原です。

2017年2月22日 9:48 ohira <shin....@gmail.com>:
>>
>> HGRCPATH=/dev/null でユーザー設定を全て無効化した状態でも試していただけ
>> ますか?
>>
>> 私の環境(Debian sid)では問題が起きたことがないから、何が違うの
>> か気になります。
>
> HGRCPATHを変更しても状況は変わりませんでした。
>
> PCBSDでのCPU数を減らした再現テストをお願いできませんでしょうか?

以前のメールでは「CentOS でも (Mercurial 4.1 で) 同じ現象が発生」
以前CentOSでの動作を確認しようとしたのですが、4.1が正常に動作しなかったので中断しました。 
4.0.2は正常動作するが4.1では正常動作しませんでした、今回の件とは違う現象のように思います。
 
とのことでしたが、当該環境に関して CentOS/Python のバージョン、論
理 CPU 数の情報を頂けますか?

また、Mercurial 4.1 での障害再現性に関して、以下のコマンドを5回程
度繰り返した場合、(ほぼ)常時再現 or 時々再現のいずれでしょうか?

  $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
  $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip

"--config worker.numcpus=XXXX" 指定は (1) 指定なしと (2) 2 指定で
確認して頂けますか?

現象が Mercurial 自身のリポジトリでも再現可能な場合は、Mercurial
自身のリポジトリを用いた確認のみで結構です。
現状だと一部ソースが改変されているので、100%正常動作すると思います。
(基本的に今回の件は、やり方が同じなら100%同じ結果です)
 

ohira

unread,
Feb 22, 2017, 4:21:22 AM2/22/17
to mercurial-ja
[shin@faith] ~/tmp% hg version
Mercurial - 分散構成管理ツール(バージョン 4.1)
(詳細は https://mercurial-scm.org を参照)

Copyright (C) 2005-2016 Matt Mackall 他
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。
[shin@faith] ~/tmp% hg clone hg hg.09
ブックマーク @ への更新中
ファイルの更新数 1294、 マージ数 0、 削除数 0、 衝突未解消数 0
[shin@faith] ~/tmp% cd hg.09
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
(leaving bookmark @)
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip -config worker.numcpus=2
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 696, in _dispatch
    cmd, func, args, options, cmdoptions = _parse(lui, args)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 476, in _parse
    raise error.CommandError(cmd, inst)
CommandError: ('update', GetoptError('option -o not recognized', 'o'))
hg update: option -o not recognized
hg update [-c] [-C] [-d DATE] [[-r] REV]

update working directory (or switch revisions)

options:

 -C --clean      discard uncommitted changes (no backup)
 -c --check      require clean working directory
 -d --date DATE  tipmost revision matching date
 -r --rev REV    revision
 -t --tool VALUE specify merge tool

(use 'hg update -h' to show more help)
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret = _update(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats = updaterepo(repo, node, False)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 -C
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 -C
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 -C
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 -C
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 -C
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% 



ohira

unread,
Feb 22, 2017, 4:35:25 AM2/22/17
to mercurial-ja
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
^[[A^[[A1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean
^[[A^[[A
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --clean
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --clean

ohira

unread,
Feb 22, 2017, 4:49:17 AM2/22/17
to mercurial-ja
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2 --clean
killed!
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
    return _dispatch(req)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
    return cmdfunc()
  File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
    return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 740, in updatetotally
    ret = _clean(repo, checkout)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 706, in clean
    stats = updaterepo(repo, node, True)
  File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels=['working copy', 'destination'])
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
  File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1203, in applyupdates
    for i, item in prog:
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup()
  File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 168, in cleanup
    os.kill(os.getpid(), -status)
OSError: [Errno 22] Invalid argument
abort: Invalid argument
[shin@faith] ~/tmp/hg.09% env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2 --clean

Katsunori FUJIWARA

unread,
Feb 22, 2017, 5:11:24 AM2/22/17
to mercurial-ja
藤原です。

2017年2月22日 18:14 ohira <shin....@gmail.com>:

> おおひらです。
>
> 2017年2月22日水曜日 17時01分10秒 UTC+9 FUJIWARA Katsunori:
>>
>> 藤原です。
>>
>> 2017年2月22日 9:48 ohira <shin....@gmail.com>:
>> >>
>> >> HGRCPATH=/dev/null でユーザー設定を全て無効化した状態でも試していただけ
>> >> ますか?
>> >>
>> >> 私の環境(Debian sid)では問題が起きたことがないから、何が違うの
>> >> か気になります。
>> >
>> > HGRCPATHを変更しても状況は変わりませんでした。
>> >
>> > PCBSDでのCPU数を減らした再現テストをお願いできませんでしょうか?
>>
>> 以前のメールでは「CentOS でも (Mercurial 4.1 で) 同じ現象が発生」
>
> 以前CentOSでの動作を確認しようとしたのですが、4.1が正常に動作し
> なかったので中断しました。
>
> 4.0.2は正常動作するが4.1では正常動作しませんでした、今回の件とは
> 違う現象のように思います。

CentOS での異常終了は「clone での異常終了だが、エラー出力等が異なっ
ていた」という認識で良いですか?それとも、clone とは別のコマンドで
の異常終了でしょうか?


>> とのことでしたが、当該環境に関して CentOS/Python のバージョン、論
>> 理 CPU 数の情報を頂けますか?
>>
>> また、Mercurial 4.1 での障害再現性に関して、以下のコマンドを5回程
>> 度繰り返した場合、(ほぼ)常時再現 or 時々再現のいずれでしょうか?
>>
>> $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
>> $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
>>
>> "--config worker.numcpus=XXXX" 指定は (1) 指定なしと (2) 2 指定で
>> 確認して頂けますか?
>>
>> 現象が Mercurial 自身のリポジトリでも再現可能な場合は、Mercurial
>> 自身のリポジトリを用いた確認のみで結構です。
>
> 現状だと一部ソースが改変されているので、100%正常動作すると思います。
> (基本的に今回の件は、やり方が同じなら100%同じ結果です)

「一部ソースが改変されているので、100%正常動作」からすると、誤解が
生じている可能性があるので、念のため。

上記で言う「Mercurial 4.1 での障害再現性」は、「CentOS 上での障害
再現性」です。

紛らわしい書き方で済みません。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Yuya Nishihara

unread,
Feb 22, 2017, 8:04:11 AM2/22/17
to mercur...@googlegroups.com, Katsunori FUJIWARA
On Wed, 22 Feb 2017 19:11:23 +0900, Katsunori FUJIWARA wrote:
> >> > PCBSDでのCPU数を減らした再現テストをお願いできませんでしょうか?
> >>
> >> 以前のメールでは「CentOS でも (Mercurial 4.1 で) 同じ現象が発生」
> >
> > 以前CentOSでの動作を確認しようとしたのですが、4.1が正常に動作し
> > なかったので中断しました。
> >
> > 4.0.2は正常動作するが4.1では正常動作しませんでした、今回の件とは
> > 違う現象のように思います。
>
> CentOS での異常終了は「clone での異常終了だが、エラー出力等が異なっ
> ていた」という認識で良いですか?それとも、clone とは別のコマンドで
> の異常終了でしょうか?

Linux では再現しなかったという仮定で。

添付の worker.py をかなり単純化したスクリプトを PCBSD で実行してみてもらえ
ますか? 単純化し過ぎて、問題は起きないかもしれませんが。

正常であれば以下のような出力になります。

% python waitpid.py
parent: forked pid 5436, waiting EOF...
child: sleep(2)
child: exiting...
parent: child exited with 0
parent: (pid = 5436, status = 0)

PCBSD のインストーラー、ダウンロードに結構時間がかかりますね。

http://download.pcbsd.org/iso/10.3-RELEASE/amd64/
waitpid.py

Katsunori FUJIWARA

unread,
Feb 22, 2017, 5:24:35 PM2/22/17
to Yuya Nishihara, mercurial-ja
藤原です。

既に西原さんの方でも確認済みかもしれませんが、私の方でも PCBSD で
障害が再現できましたので、とりあえず情報を投げておきます。

環境:

- PCBSD 10.3 RELEASE 03-31-2016 ベース
- 2 CPU, 2GB メモリ
- Python 2.7.11

障害の発生手順は:

def waitforworkers(blocking=True):
for pid in pids.copy():
p = st = 0
while True:
try:
p, st = os.waitpid(pid, (0 if blocking else os.WNOHANG))
# (1) ※ p = 0, st = -512 で終了
break
except OSError as e:
if e.errno == errno.EINTR:
continue
elif e.errno == errno.ECHILD:
# child would already be reaped, but pids yet been
# updated (maybe interrupted just after waitpid)
pids.discard(pid)
break
else:
raise
if p:
pids.discard(p)
st = _exitstatus(st)
# (2) ※ p == 0 なので、(1) pids は破棄無し (2) st は -512 のまま
if st and not problem[0]:
# (3) ※ st != 0 なので、problem[0] に -512 を格納
problem[0] = st

最終的に os.kill(PID, 512) が実行され、未知のシグナル番号 512 から、
Invalid Argument 例外発生、という流れになっていますね。

Python 的な os.waitpid() の仕様が満たされていない感じですが、
"python os.waitpid freebsd" でザッと検索したら、stackoverflow でも
同様の症例で質問が上がっていました。

http://stackoverflow.com/questions/38984449/is-status-value-from-os-waitpid-unreliable-when-os-wnohang-is-used-under-freebsd

とりあえず以下の暫定対処での正常動作が確認できました。


diff -u a/mercurial/worker.py b/mercurial/worker.py
--- a/mercurial/worker.py
+++ b/mercurial/worker.py
@@ -123,6 +123,8 @@
if p:
pids.discard(p)
st = _exitstatus(st)
+ else:
+ continue
if st and not problem[0]:
problem[0] = st
def sigchldhandler(signum, frame):


if not p: continue の方が綺麗な気もしますが、とりあえず差分の少な
さ優先で (笑) 後は pids.discard(pid) 実施の有無ぐらいかな?

ちなみに、CentOS 6/7 での Mercurial 4.1 の動作確認も行いましたが、
とりあえず CPU x 2 の仮想環境上での clone + update は問題なく実行
できました。

なので、追加の障害報告をお待ちしております (笑) > おおひらさん


2017年2月22日 22:02 Yuya Nishihara <yu...@tcha.org>:
--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Feb 22, 2017, 7:37:31 PM2/22/17
to mercurial-ja

>> 以前のメールでは「CentOS でも (Mercurial 4.1 で) 同じ現象が発生」
>
> 以前CentOSでの動作を確認しようとしたのですが、4.1が正常に動作し
> なかったので中断しました。
>
> 4.0.2は正常動作するが4.1では正常動作しませんでした、今回の件とは
> 違う現象のように思います。

CentOS での異常終了は「clone での異常終了だが、エラー出力等が異なっ
ていた」という認識で良いですか?それとも、clone とは別のコマンドで
の異常終了でしょうか?

別のコマンド(hg)でもエラーが発生していました。

4.1でエラーが発生しているという記事を検索したところ
他の方が4.1でエラーが発生する現象を報告していて
自分も 同じようなエラーが4.1で確認できたので、コメント書き込んだところ
最新版では発生しないのでOKという作者の判断でした。


>> とのことでしたが、当該環境に関して CentOS/Python のバージョン、論
>> 理 CPU 数の情報を頂けますか?
>>
>> また、Mercurial 4.1 での障害再現性に関して、以下のコマンドを5回程
>> 度繰り返した場合、(ほぼ)常時再現 or 時々再現のいずれでしょうか?
>>
>>   $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
>>   $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
>>
>> "--config worker.numcpus=XXXX" 指定は (1) 指定なしと (2) 2 指定で
>> 確認して頂けますか?
>>
>> 現象が Mercurial 自身のリポジトリでも再現可能な場合は、Mercurial
>> 自身のリポジトリを用いた確認のみで結構です。
>
> 現状だと一部ソースが改変されているので、100%正常動作すると思います。
> (基本的に今回の件は、やり方が同じなら100%同じ結果です)

「一部ソースが改変されているので、100%正常動作」からすると、誤解が
生じている可能性があるので、念のため。

上記で言う「Mercurial 4.1 での障害再現性」は、「CentOS 上での障害
再現性」です。
 CentOSの再現では、CPU数やハードにはこだわらないということでしょうか?

現状PCBSDで動作中のハードをCentOSに入れ替えるのは無理な状況です。
(予備のハードがあれば良いのですが)

ohira

unread,
Feb 22, 2017, 7:44:29 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
頂いたテストプログラムをダウンロードして実行しました。

ohira

unread,
Feb 22, 2017, 7:45:12 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
[shin@faith] ~/tmp% cp ../Downloads/waitpid.py .
[shin@faith] ~/tmp% python waitpid.py
parent: forked pid 12807, waiting EOF...
child: sleep(2)
child: exiting...
parent: child exited with 0
parent: (pid = 12807, status = 0)
[shin@faith] ~/tmp% md5 waitpid.py 
MD5 (waitpid.py) = 9ef257c90e58a55575fd955f0193ec63
[shin@faith] ~/tmp% cat waitpid.py 
#!/usr/bin/env python

import os
import signal
import time

def sigchldhandler(signum, frame):
    p, st = os.waitpid(pid, os.WNOHANG)
    assert p == pid
    if os.WIFEXITED(st):
        print('parent: child exited with %d' % os.WEXITSTATUS(st))
    elif os.WIFSIGNALED(st):
        print('parent: child killed by signal %d' % os.WTERMSIG(st))
    print('parent: (pid = %d, status = %d)' % (p, st))

oldsigchldhandler = signal.signal(signal.SIGCHLD, sigchldhandler)
rfd, wfd = os.pipe()
pid = os.fork()
if pid == 0:
    signal.signal(signal.SIGCHLD, oldsigchldhandler)
    os.close(rfd)
    print('child: sleep(2)')
    time.sleep(2)
    print('child: exiting...')
    os._exit(0)
else:
    os.close(wfd)
    print('parent: forked pid %d, waiting EOF...' % pid)
    os.read(rfd, 1024)
    time.sleep(1)
[shin@faith] ~/tmp%



2017年2月23日木曜日 9時44分29秒 UTC+9 ohira:

ohira

unread,
Feb 22, 2017, 8:49:39 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
PCBSDと同じマシンでテストできないので、VMのCentOSでテストしました。

-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
(leaving bookmark @)
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
1294 files updated, 0 files merged, 0 files removed, 0 files unresolved
-bash-4.1$ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null
0 files updated, 0 files merged, 1294 files removed, 0 files unresolved
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ 
-bash-4.1$ uname -a
Linux escm21.mxfw.net 2.6.32-573.22.1.el6.x86_64 #1 SMP Wed Mar 23 03:35:39 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
-bash-4.1$ 
-bash-4.1$ dmesg | fgrep cpu
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
KERNEL supported cpus:
x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106
x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106
NR_CPUS:4096 nr_cpumask_bits:2 nr_cpu_ids:2 nr_node_ids:1
PERCPU: Embedded 30 pages/cpu @ffff880028200000 s91224 r8192 d23464 u1048576
pcpu-alloc: s91224 r8192 d23464 u1048576 alloc=1*2097152
pcpu-alloc: [0] 0 1 
Initializing cgroup subsys cpuacct
CPUID marked event: 'cpu cycles' unavailable
NMI watchdog disabled (cpu0): hardware events not enabled
x86 PAT enabled: cpu 0, old 0x0, new 0x7010600070106
x86 PAT enabled: cpu 1, old 0x0, new 0x7010600070106
HPET: 16 timers in total, 0 timers will be used for per-cpu timer
ACPI: acpi_idle registered with cpuidle
cpuidle: using governor ladder
cpuidle: using governor menu
-bash-4.1$ 


ohira

unread,
Feb 22, 2017, 9:41:28 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
おおひらです。

今までのテストと違った結果になりました。

経緯
もしかして、PCBSDじゃなくてFreeBSDでも同じ結果かもと思ってテストしたところ
同じテストをして、違った結果になる場合があることがわかりました。

今までは同じテストで同じ結果100%だったのですが、、、


$ 
$ uname
-a
FreeBSD core.mxfw.net 10.3-RELEASE-p7 FreeBSD 10.3-RELEASE-p7 #0: Thu Aug 11 18:38:15 UTC 2016     ro...@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
$
$ dmesg
| fgrep cpu
 cpu0
(BSP): APIC ID:  0
 cpu1
(AP): APIC ID:  1
 cpu2
(AP): APIC ID:  2
 cpu3
(AP): APIC ID:  3
cpu0
: <ACPI CPU> on acpi0
cpu1
: <ACPI CPU> on acpi0
cpu2
: <ACPI CPU> on acpi0
cpu3
: <ACPI CPU> on acpi0
est0
: <Enhanced SpeedStep Frequency Control> on cpu0
est1
: <Enhanced SpeedStep Frequency Control> on cpu1
est2
: <Enhanced SpeedStep Frequency Control> on cpu2
est3
: <Enhanced SpeedStep Frequency Control> on cpu3
$
$ hg clone
~/repos/hg --noupdate
destination directory
: hg
$ cd hg
$
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=1

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=1

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=1

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=1

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=1

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=1

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=1

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=1

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=1

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$
$
$
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2

1294 files updated, 0 files merged, 0 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback null --config worker.numcpus=2

0 files updated, 0 files merged, 1294 files removed, 0
 files unresolved
$ env LC_ALL
=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip --config worker.numcpus=2
killed
!

Traceback (most recent call last):
 
File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 208, in _runcatchfunc
   
return _dispatch(req)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 811, in _dispatch
    cmdpats
, cmdoptions)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 563, in runcommand
    ret
= _runcommand(ui, options, cmd, d)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 819, in _runcommand
   
return cmdfunc()
 
File "/usr/local/lib/python2.7/site-packages/mercurial/dispatch.py", line 808, in <lambda>
    d
= lambda: util.checksignature(func)(ui, *args, **strcmdopt)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/util.py", line 1051, in check
   
return func(*args, **kwargs)

 
File "/usr/local/lib/python2.7/site-packages/mercurial/commands.py", line 6549, in update
   
return hg.updatetotally(ui, repo, rev, brev, clean=clean, check=check)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 742, in updatetotally
    ret
= _update(repo, checkout)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 695, in update
    stats
= updaterepo(repo, node, False)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/hg.py", line 691, in updaterepo
    labels
=['working copy', 'destination'])
 
File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1660, in update
    stats
= applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
 
File "/usr/local/lib/python2.7/site-packages/mercurial/merge.py", line 1210, in applyupdates
   
for i, item in prog:
 
File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 178, in _posixworker
    cleanup
()

 
File "/usr/local/lib/python2.7/site-packages/mercurial/worker.py", line 169, in cleanup
    sys
.exit(status)
SystemExit: 151587081


ohira

unread,
Feb 22, 2017, 9:44:28 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org

ohira

unread,
Feb 22, 2017, 9:47:51 PM2/22/17
to mercurial-ja, flying...@gmail.com, yu...@tcha.org
2017年2月23日木曜日 11時44分28秒 UTC+9 ohira:
$ 
$ uname
-a
FreeBSD core.mxfw.net 10.3-RELEASE-p7 FreeBSD 10.3-RELEASE-p7 #0: Thu Aug 11 18:38:15 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

Katsunori FUJIWARA

unread,
Feb 23, 2017, 2:15:30 AM2/23/17
to mercurial-ja
藤原です。

2017年2月23日 9:37 ohira <shin....@gmail.com>:

>> >> とのことでしたが、当該環境に関して CentOS/Python のバージョン、論
>> >> 理 CPU 数の情報を頂けますか?
>> >>
>> >> また、Mercurial 4.1 での障害再現性に関して、以下のコマンドを5回程
>> >> 度繰り返した場合、(ほぼ)常時再現 or 時々再現のいずれでしょうか?
>> >>
>> >> $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback
>> >> null
>> >> $ env LC_ALL=C LANGUAGE= HGRCPATH=/dev/null hg update --traceback tip
>> >>
>> >> "--config worker.numcpus=XXXX" 指定は (1) 指定なしと (2) 2 指定で
>> >> 確認して頂けますか?
>> >>
>> >> 現象が Mercurial 自身のリポジトリでも再現可能な場合は、Mercurial
>> >> 自身のリポジトリを用いた確認のみで結構です。
>> >
>> > 現状だと一部ソースが改変されているので、100%正常動作すると思います。
>> > (基本的に今回の件は、やり方が同じなら100%同じ結果です)
>>
>> 「一部ソースが改変されているので、100%正常動作」からすると、誤解が
>> 生じている可能性があるので、念のため。
>>
>> 上記で言う「Mercurial 4.1 での障害再現性」は、「CentOS 上での障害
>> 再現性」です。
>
> CentOSの再現では、CPU数やハードにはこだわらないということでしょうか?

おおひらさんから、CentOS 上での異常終了に関して:

別のコマンド(hg)でもエラーが発生していました。

4.1でエラーが発生しているという記事を検索したところ
他の方が4.1でエラーが発生する現象を報告していて
自分も 同じようなエラーが4.1で確認できたので、コメント書き込んだところ
最新版では発生しないのでOKという作者の判断でした。

という、「PC-BSD での現象とは全然別物」で且つ「原因となるエクステ
ンションが既に修正済み」という背景情報の提示がない状態で:

現状だと一部ソースが改変されているので、100%正常動作すると思います。

という「一部ソースが改変」言及がいきなり出てきたので、もしかしたら、
私が「CentOS 上での動作確認」の旨で書いた依頼を、「PC-BSD 上での動
作確認」と勘違いして、「以下の改変を適用したので (PC-BSD 上では)
100%正常動作する」と返信したのかも?と推測した上での言及です。

いただいた情報と今までのテスト結果を元に上記の部分を修正したと
ころ4.1 でもエラーが発生しなくなりました。

https://groups.google.com/d/msg/mercurial-ja/cWgITk4MNpM/FfMV7wTjDgAJ
https://groups.google.com/d/msg/mercurial-ja/cWgITk4MNpM/6VnA5yDjDgAJ


なお、今回は PC-BSD と CentOS での障害は全くの別物でしたが、もしも
同一の現象で且つ再現性が高いなら、特に同一構成にこだわる必要はない
かと。

現象再現性が低いなら、まずは同一環境 (and/or 同一ハードウェア構成)で
確認するのが基本ですけどね。


> 現状PCBSDで動作中のハードをCentOSに入れ替えるのは無理な状況です。
> (予備のハードがあれば良いのですが)

先の返信でも書きましたが、とりあえず「PC-BSD 上での現象の再現」は
できましたし、「CentOS 上での障害の詳細把握」もできたので、CentOS
への入れ替えは不要です。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Yuya Nishihara

unread,
Feb 23, 2017, 7:01:20 AM2/23/17
to mercur...@googlegroups.com, Katsunori FUJIWARA
On Thu, 23 Feb 2017 07:24:34 +0900, Katsunori FUJIWARA wrote:
> Python 的な os.waitpid() の仕様が満たされていない感じですが、
> "python os.waitpid freebsd" でザッと検索したら、stackoverflow でも
> 同様の症例で質問が上がっていました。

(mercurial-devel にはコメントしましたが、) POSIX では特に規定がなさそう
なので、仕様上未定義だと思われます。 Python のラッパーは 0 を返したそうな
空気がありましたが、単に未初期化変数の警告を抑制しただけだったのかもしれ
ません。

> diff -u a/mercurial/worker.py b/mercurial/worker.py
> --- a/mercurial/worker.py
> +++ b/mercurial/worker.py
> @@ -123,6 +123,8 @@
> if p:
> pids.discard(p)
> st = _exitstatus(st)
> + else:
> + continue
> if st and not problem[0]:
> problem[0] = st
> def sigchldhandler(signum, frame):
>
>
> if not p: continue の方が綺麗な気もしますが、とりあえず差分の少な
> さ優先で (笑) 後は pids.discard(pid) 実施の有無ぐらいかな?

この程度なら、 if not p: continue で、残りのインデントを下げてもいいと
思いますよ。

Katsunori FUJIWARA

unread,
Feb 23, 2017, 8:07:41 AM2/23/17
to Yuya Nishihara, mercurial-ja
藤原です。

2017年2月23日 20:59 Yuya Nishihara <yu...@tcha.org>:

> On Thu, 23 Feb 2017 07:24:34 +0900, Katsunori FUJIWARA wrote:

>> Python 的な os.waitpid() の仕様が満たされていない感じですが、
>> "python os.waitpid freebsd" でザッと検索したら、stackoverflow でも
>> 同様の症例で質問が上がっていました。
>
> (mercurial-devel にはコメントしましたが、) POSIX では特に規定がなさそう
> なので、仕様上未定義だと思われます。 Python のラッパーは 0 を返したそうな
> 空気がありましたが、単に未初期化変数の警告を抑制しただけだったのかもしれ
> ません。

確かに POSIX 仕様だと、WNOHANG 付き waitpid() 呼び出しで、状態が即
時取得できないケースでの stat_loc への格納に関しては、定義されてい
ませんね。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html

しかしその一方で Python の仕様だと、os.WNOHANG 付きの os.waitpid() は
"The function returns (0, 0) in this case (= no child process
status is available immediately)" と明言しちゃってるんですよねぇ。

https://docs.python.org/2/library/os.html#os.WNOHANG

まぁ、ドキュメント執筆の段階で、実装担当の意図しない内容になってし
まったということも考えられますが (笑)

>> diff -u a/mercurial/worker.py b/mercurial/worker.py
>> --- a/mercurial/worker.py
>> +++ b/mercurial/worker.py
>> @@ -123,6 +123,8 @@
>> if p:
>> pids.discard(p)
>> st = _exitstatus(st)
>> + else:
>> + continue
>> if st and not problem[0]:
>> problem[0] = st
>> def sigchldhandler(signum, frame):
>>
>>
>> if not p: continue の方が綺麗な気もしますが、とりあえず差分の少な
>> さ優先で (笑) 後は pids.discard(pid) 実施の有無ぐらいかな?
>
> この程度なら、 if not p: continue で、残りのインデントを下げてもいいと
> 思いますよ。

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

Yuya Nishihara

unread,
Feb 23, 2017, 8:21:05 AM2/23/17
to mercur...@googlegroups.com, Katsunori FUJIWARA
On Thu, 23 Feb 2017 22:07:39 +0900, Katsunori FUJIWARA wrote:
> 2017年2月23日 20:59 Yuya Nishihara <yu...@tcha.org>:
> > (mercurial-devel にはコメントしましたが、) POSIX では特に規定がなさそう
> > なので、仕様上未定義だと思われます。 Python のラッパーは 0 を返したそうな
> > 空気がありましたが、単に未初期化変数の警告を抑制しただけだったのかもしれ
> > ません。
>
> 確かに POSIX 仕様だと、WNOHANG 付き waitpid() 呼び出しで、状態が即
> 時取得できないケースでの stat_loc への格納に関しては、定義されてい
> ませんね。
>
> http://pubs.opengroup.org/onlinepubs/9699919799/functions/waitpid.html
>
> しかしその一方で Python の仕様だと、os.WNOHANG 付きの os.waitpid() は
> "The function returns (0, 0) in this case (= no child process
> status is available immediately)" と明言しちゃってるんですよねぇ。
>
> https://docs.python.org/2/library/os.html#os.WNOHANG

おっ、これは見落としていました。実装かドキュメントのバグですね。

CPython 2.7 の実装では、 status をゼロ初期化してから waitpid() を呼び出して
います。これにどれ程の意図があったのか、何とも言えません。

https://github.com/python/cpython/blob/2.7/Modules/posixmodule.c#L6239
Reply all
Reply to author
Forward
0 new messages