読者です 読者をやめる 読者になる 読者になる

Lightroom6をUpdateしたらメモリ食い潰されるようになった(追記有。解消済)

画像処理

今週10/5にLightroom 6.2(CC 2015.2)にがリリースされた。

Lightroom CC 2015.2 now available


昨晩Updateしたところ、私の環境と用途では実用に耐えない悲惨な状態に陥ったので、状況共有のため現状をメモ。
※なお、軽くググった限りでは今回のUpdateに関する同様の障害報告は見当たらないのだが、Lightroomのメモリ枯渇ネタ自体は旧バージョンからMac/Win問わず大量にヒットするので、上手く検索できていないだけかもしれない。

 

-----↓2015/10/13追記-----

10/10にリリースされたCC2015.2.1で解消したことを確認。詳細は下記投稿にて。

-----2015/10/13追記↑-----

 

現象

複数画像の書き出し中にメモリを食い潰されて、異常終了する。
(単に使用端末が貧弱でメモリ枯渇で落ちてるだけと言えばそうなのだが、直前のCC 2015.1では発生していない。)

 

環境

Windows8.1 Pro 64bit
Core i5 3317U
4GB RAM
(Microsoft Surface Pro 初代)
読み込み元:NAS
書き出し先:ローカルのSSD

 

状況

数十枚から数百枚の画像を書き出すと、徐々にメモリを消費し、最終的には30枚程度書き出した後に、メモリ枯渇で異常終了。
Lightroom起動直後、lightroom.exeのメモリ消費量は約906MB、検証のため1枚選択後1枚書き出しを繰り返すとメモリ消費量は以下のように変化。

  • 1枚目906MB→1128MB(書き出し後もメモリ解放されない)
  • 2枚目1128MB→1323MB(書き出し後もメモリ解放されない)
  • 3枚目1323MB→1307MB(多少解放された)

消費メモリが増え続け、解放されない状態が発生する。

複数枚選択後書き出しを行い、リソースモニタでモニタリングしても同様の状況が確認される。

経時的にメモリ消費量が上昇し、時折メモリが部分的に解放されるだけであり、結果的にメモリ枯渇に向かって突き進む状態となる。(メモリ解放が行われるタイミングも画像1枚毎の書き出し完了時でも、物理或いは物理と仮想の合計メモリの逼迫時でもなく、何がトリガーか不明。)

当然、物理メモリの枯渇によりハードフォールトが多発し、lightroom.exeが応答しなくなる事象も頻発。
末期にはメモリ枯渇の警告ダイアログがWindowsより発せられる。

f:id:kachine:20151008190648p:plain

強制終了せずにLightroomのプロセスを動作させ続けると、最終的に物理、仮想共にメモリ枯渇しlightroom.exeのプロセスが死亡。

f:id:kachine:20151008190812p:plain
※悲惨な時には最近殆ど発生しなくなったWindowsのシェルごと落ちたことも1回ある。Surface Proの強制シャットダウン方法が分からなくて焦った。

 

その他エビデンス

  • イベントログ
    リソース枯渇検出人によりメモリ不足を警告するイベントトログが記録された数分後、Lightroomのエラーが記録される。Lightroomのエラーの方は例外コード0xc0000005で、障害オフセット0x000000000003c963で再現性がある。(勿論PIDや時刻は都度異なるが。)
    f:id:kachine:20151008191501p:plain
    f:id:kachine:20151008191518p:plain
  • リソースモニタ
    lightroom.exe死亡直後の様子。この時は物理と仮想の合計約5.8GBも不当にlightroom.exeが占有したため、Windowsに自衛措置として撃墜され、物理3GB強の領土領域を取り戻した様子。
    f:id:kachine:20151008190958p:plain

 

推測

上記状況から、メモリが足りないことが問題ではなく、処理済の画像の現像に要したメモリを完全に開放しないことと、メモリ解放のタイミングが不適切なことの2点が問題と考えられる。故に、メモリリークの可能性を含め、Lightroomのメモリマネジメントがおかしいと推測される。
空きメモリ容量と搭載メモリ容量を取り違えてるなんてことはないのだろうけど、Disposeすべき現像済画像オブジェクトを不要に保持し続けているとかはあり得そうな気もする。

 

対症療法

とりあえず、1600万画素クラスの25枚程度までなら複数枚選択し一括で書き出しできているので、途中Lightroomの再起動を挟みつつ25枚単位で複数回書き出しすることにする。
インターバル撮影を頻繁にする身としては一度に数百枚程度の書き出しができないと著しく不便極まりないのだが。

 

その他

数回前のUpdateまでは、Lightroomと同時にChromeなどの比較的メモリ消費が多いアプリケーションを起動していても問題なかったのだが、最近はLightroomだけの単独起動でないとメモリ枯渇が発生するようになっていた。そして、今回の事象に至った事から察するに、メモリ回りの処理に徐々に変更が入っていたのではないかと想像される。新機能自体は基本的に歓迎するし、機能追加によってメモリ消費量が増えるのは納得なのだが、処理済み画像の現像に使ったメモリ解放しないのは初歩的なバグだと思うのです。それに気付かないAdobeの開発環境或いは検証環境にはどれだけ大量のメモリを搭載しているのでしょうか、羨ましい。バグではなく、湯水のごとくメモリを浪費するのが今日のコンピューティングのあるべき姿だという趣旨なら、メモリ16GBのSurface Bookを提供してほしい(違