2012年9月4日

やられた ( eclipse と Windows コマンドライン )

eclipse の tigris (JavaVL) SVN が 1.6 で、コマンドラインの svn が 1.7 だと、コマンドラインの svn で更新したディレクトリは eclipse の svn から認識できなくなる

(管理ファイルに下位互換がない)

それは当然だ。わかりやすい。

しかし

eclipse の tigiris svn が 1.6 で、コマンドラインの svn の 1.6 を入れてパスを通すと、エクリプスが落ちる。

Windows 環境のほかだとどうか、最新の eclipse だとどうか。いろいろと興味は尽きないが、追求しない。(する環境もないが、する気は起きない)

だが検索するほどに困っている人には見つかると良いな、と思う。

eclipse が落ちるときに、作業ディレクトリにできるログは以下

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x061f81cc, pid=2844, tid=2480
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_12-b04 mixed mode)
# Problematic frame:
# C  [libapr-1.dll+0x81cc]
#

---------------  T H R E A D  ---------------

Current thread (0x03c85d48):  JavaThread "Worker-0" [_thread_in_native, id=2480]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x0330c020, EBX=0x00000000, ECX=0x00000000, EDX=0x00000000
ESP=0x058f8bac, EBP=0x058f8bb8, ESI=0x039e7468, EDI=0x00000000
EIP=0x061f81cc, EFLAGS=0x00010246

Top of Stack: (sp=0x058f8bac)
0x058f8bac:   00000000 039e7468 0330c020 058fabe4
0x058f8bbc:   056a1f32 058fabe0 0330c020 00000000
0x058f8bcc:   00000000 00000000 039e7468 0330c020
0x058f8bdc:   00000000 0330c020 00000000 0330c020
0x058f8bec:   0330c0c0 6eec8461 0330c020 00000010
0x058f8bfc:   6ee40000 6eec11f2 0330c020 0330c0c0
0x058f8c0c:   6eec1210 6eec8570 0330c020 0330c070
0x058f8c1c:   0330c020 0330c020 00000000 003a0043 

Instructions: (pc=0x061f81cc)
0x061f81bc:   89 55 10 53 8b 5d 14 56 57 85 db 75 03 8b 58 18
0x061f81cc:   8b 03 bf 01 00 00 00 3b c7 0f 82 1b 01 00 00 8b 


Stack: [0x05800000,0x05900000),  sp=0x058f8bac,  free space=994k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libapr-1.dll+0x81cc]
C  [libapriconv-1.dll+0x1f32]
C  [libapriconv-1.dll+0x1da4]
C  [_tbl_simple.so+0x123b]
C  [_tbl_simple.so+0x11c4]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  org.tigris.subversion.javahl.SVNClient.status(Ljava/lang/String;ZZZZZ)[Lorg/tigris/subversion/javahl/Status;+0
j  org.tigris.subversion.javahl.SVNClient.status(Ljava/lang/String;ZZZZ)[Lorg/tigris/subversion/javahl/Status;+9
j  org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.getStatus(Ljava/io/File;ZZZ)[Lorg/tigris/subversion/svnclientadapter/ISVNStatus;+79
j  org.tigris.subversion.subclipse.core.client.PeekStatusCommand.execute(Lorg/tigris/subversion/svnclientadapter/ISVNClientAdapter;)V+41
j  org.tigris.subversion.subclipse.core.resources.SVNWorkspaceRoot.peekResourceStatusFor(Lorg/eclipse/core/resources/IResource;)Lorg/tigris/subversion/subclipse/core/resources/LocalResourceStatus;+16
j  org.tigris.subversion.subclipse.core.SVNTeamProvider.setProject(Lorg/eclipse/core/resources/IProject;)V+29
j  org.eclipse.team.core.RepositoryProvider.mapNewProvider(Lorg/eclipse/core/resources/IProject;Ljava/lang/String;)Lorg/eclipse/team/core/RepositoryProvider;+273
j  org.eclipse.team.core.RepositoryProvider.mapExistingProvider(Lorg/eclipse/core/resources/IProject;Ljava/lang/String;)Lorg/eclipse/team/core/RepositoryProvider;+65
j  org.eclipse.team.core.RepositoryProvider.getProvider(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/team/core/RepositoryProvider;+45
j  org.eclipse.team.internal.core.TeamHookDispatcher.getProvider(Lorg/eclipse/core/resources/IResource;)Lorg/eclipse/team/core/RepositoryProvider;+6
j  org.eclipse.team.internal.core.TeamHookDispatcher.getRuleFactory(Lorg/eclipse/core/resources/IProject;)Lorg/eclipse/core/resources/IResourceRuleFactory;+9
j  org.eclipse.core.internal.resources.Rules.factoryFor(Lorg/eclipse/core/resources/IResource;)Lorg/eclipse/core/resources/IResourceRuleFactory;+58
j  org.eclipse.core.internal.resources.Rules.refreshRule(Lorg/eclipse/core/resources/IResource;)Lorg/eclipse/core/runtime/jobs/ISchedulingRule;+18
j  org.eclipse.core.internal.resources.Resource.refreshLocal(ILorg/eclipse/core/runtime/IProgressMonitor;)V+106
j  org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus;+91
j  org.eclipse.core.internal.resources.InternalWorkspaceJob.run(Lorg/eclipse/core/runtime/IProgressMonitor;)Lorg/eclipse/core/runtime/IStatus;+37
j  org.eclipse.core.internal.jobs.Worker.run()V+31
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x03b51b90 JavaThread "Thread-5" [_thread_blocked, id=2072]
  0x03c202d0 JavaThread "Worker-2" [_thread_blocked, id=2428]
  0x03a485e0 JavaThread "Java インデックス作成" daemon [_thread_blocked, id=2312]
  0x03a6cd50 JavaThread "Worker-1" [_thread_blocked, id=188]
  0x03a6ddb0 JavaThread "Thread-4" [_thread_blocked, id=2060]
=>0x03c85d48 JavaThread "Worker-0" [_thread_in_native, id=2480]
  0x03cacc08 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=2184]
  0x03a2ad88 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=3168]
  0x031ab948 JavaThread "State Data Manager" daemon [_thread_blocked, id=1984]
  0x031c8098 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1736]
  0x031d13c8 JavaThread "CompilerThread0" daemon [_thread_blocked, id=1952]
  0x031c0278 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=3536]
  0x031b17c0 JavaThread "AWT-Windows" daemon [_thread_in_native, id=632]
  0x00ae9db8 JavaThread "Finalizer" daemon [_thread_blocked, id=676]
  0x00ae8948 JavaThread "Reference Handler" daemon [_thread_blocked, id=3916]
  0x00a2cbe0 JavaThread "main" [_thread_in_native, id=1140]

Other Threads:
  0x00ae4720 VMThread [id=4004]
  0x00b15ab0 WatcherThread [id=3368]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
(以下略)

寝癖の朝、個人に活かすドラムバッファ管理

坊主頭にしていなかったら、今朝はひどい寝癖。
午前一時半に帰宅し、しばし休んでから眠り六時過ぎに起きた。七時半のいま、往路の電車の中だ。

仕事のしかたが思い出せない。もとから知らなかったのかな。
『帰宅までにxx、yy、zzの順で作業します(yyまでは少なくとも終わるでしょう)』と朝に打ち合わせをしたあと、xxの段階でトラブルがあった。

夜8時過ぎ、『今日のうちに終わりそうにないではありませんか。アラートは早めに上げてくださいよ』と注意される。筋が通っているし、その立場にいたこともあるから言いたいことは良く分かる。

だが、トラブル発生の午前11時から、どの段階でアラート上げるべきと決断すべきだったか、その反省に未だ結論が出なくて課題となっている。
(技術的な、個々のトラブルを『こう進めたら良かったのか』というあと知恵ならば浮かぶし、そんな反省しかしたことがなかったのかもしれない)

ドラムバッファフロー、TOCのプロジェクト管理手法。
きっとxx、yy、zzの仕事に理想的な必要時間を見積もった残りを意識して、トラブル発生からどれだけバッファを食い潰したかで判断すべきだったのかな。

相談すると、相談そのものに一時間からのバッファの食い潰しが発生する、それを感じて避けてしまったのがひとつ。
人は四時間ならば集中できると、今までの自分の倍以上の根性を発見して自惚れるあまり、八時間・十時間・二十四時間は自分の休憩や周囲の状況を考慮に入れないといけないことを忘れていたのがもうひとつ。

そんな気づきが次回につながるか、活かす機会は自分の人生にこの先訪れるのかと、文を書きながら思考を進め、気分が滅入ったところで、職場もよりの駅に着く。

むかしは、たぶん『ぼくはこれだけ頑張ってるのだから許してください』と卑屈に必死さをアピールしているうちに周りが気遣ってくれ、あるいは自分がその卑屈さに嫌気がさして、なんらかの形で仕事が終わっていた。