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

手続き型音楽の日常

関数型音楽に乗り換えたい

Windows 8 に Office 2003 をインストールするとたまにクラッシュする話を調査した

サポートされていない組み合わせに対してああだこうだ言うことはしませんが、ただ一つ言えるのは、Office2003が今でも現役だということ。

基本的にフロントエンドの方や個人の方は、絶対にOffice2016かOffice365を買ったほうが得です、というか無茶しないでください。苦しむ目にあいますから。

症状と原因

当方の環境は、Windows 8.1 Pro に Office 2013 がインストールされています。

症状は、.NET製品で「ファイルを開く」ダイアログを開いたときにクラッシュするという現象です。ExcelVisual Studioが落ちます。

気づいたのは、Excel VBAでマクロを作っていたとき。まれにGetOpenFilename関数でダイアログを開いているところで落ちてしまうことがありました。

最初のことろはちょっとしたバグか不具合かと思っていたのですが、10回の起動に1回くらいのペースで落ちるようになりました。

そこでイベントビューワで調べてみたら、MSONSEXT.DLLというライブラリで落ちていることが判明。

さらに、以前から現象があった Visual Studio 2013 で Visual Studio Installer Project 編集する際に使う「ファイルを開く」ダイアログでも不定期に落ちることがある問題も、同じライブラリで落ちていることが判明しました。

Access 2003をインストールしていた

問題のファイルはC:\Program Files (x86)\Common Files\Microsoft Shared\Web Folders\の下にあるもので、更新日時が2003年の7月、バージョンが11.0.5510.0でした。

そしてその付近(同階層)にあるフォルダー作成日時が、私がAccess 2003をインストールした日時と一致していたのです。とある案件でAccessが必要になったため、カスタムインストールしていたものです。

本当はOffice 2013のAccessをインストールするのが正解なのでしょうが、実際に納品する環境で使うものがAccess 2003だったため、互換性を重視してOffice 2003にしたのです。

なお、Office 2003 は Windows 8 をサポートしておらず、互換性はありません。

このファイルについて調べてみると、とくにShare Pointなどに使われているDLLで、Windows Server 2003Windows XP向けのWindows Updateに更新が含まれていました。Windows Vistaも対象のようです。

https://support.microsoft.com/ja-jp/kb/907306

また、Windows 2000Windows Me、Windows 98などにも環境によっては含まれることがあるみたいで、これについてもWindowsUpdateがある情報もありました。Windows MeにWindows Updateなんてあったかなぁ…

https://support.microsoft.com/ja-jp/kb/892211

イベントビューワの情報

すべては写すことができませんでしたが、要約すると以下の通り。

  • エラーを起こしたモジュール:MSONSEXT.DLL(ver. 11.0.5510.0)
  • 例外コード:0xc0000005
    • これ以外は基本的に出てきません
    • 調べてみるとメモリ違反だそうです
  • 障害オフセット:0x00052b570x000534d50x00052b040x0005136cなど

同じ問題をもている方々の情報

同じような症状を訴えている方を、英語圏ですが発見しました。

Microsoft word crashing

ここで3人の方が同じ症状を訴えられています。英語を読めないながら解読しましたが、状況はほぼ同じようです。

  • 1人目(質問者)
    • Windows 8 Pro
    • Office 2010 インストール済み
    • Visio のみ 2003 がインストールされている
    • Word 2010 がMSONSEXT.DLLを原因にしてクラッシュする(ときどき)
    • 体験版の Visio 2013 をインストールしたが改善せず
  • 2人目
    • Windows 8 Pro
    • Office 2010 インストール済み
    • Visio のみ 2003 がインストールされている
    • Word 2010, Excel 2010, Powerpoint 2010 でファイルを開こうとするがMSONSEXT.DLLを原因にしてクラッシュする
  • 3人目
    • Windows XP
    • Office 2002 インストール済み → アンインストール
    • Office 2010 インストール
    • 1人目、2人目と同じ問題で Excel 2010 と Word 2010 がクラッシュする
    • Office 2002 をインストールした時点でMSONSEXT.DLLが配置されることを確認
    • Windows 7 のパソコンに Office 2010 のみインストールすると、MSONSEXT.DLLは配置されないことを確認

要は Office 2003(2002) が悪いんですよね、Office 2010 以降と互換性がないんですよね。

結局

今のところ、解決はしていません。もう案件は終わりましたが、今は別の案件の処理にPCを使っているため、変なことをして環境を壊したくないのです。

情報から察するに、アンインストールしてもファイルは残り、根本的な解決はできないみたいです。

ただ、Office 2003 のインストールで配置されるということは、必要なファイルなのでしょうね。

また、ファイルを開くダイアログでクラッシュするということは、シェル拡張に近いものなのかなとも考えていて、そのまま消してしまってはいけないのかと思ってしまいます。

どのように解決したらいいんでしょうね…。どなたか知っている方がいらっしゃれば教えていただきたいです……。

セキュリティ オプション と サインイン オプション

という名前の画面が、Windowsにはあるらしい。

というか、あった。

メモリが足らないと表示できない画面

今日は本職で使っているWindows 8.1のPCで、事は起きました。

メモリを4GBしか積んでいないPCで、既に使用量が3GB近い中、2.7GBのShiftJISのテキストファイルをSublime Textで開きました。

案の定、フリーズするわけで、まずSublime Textが応答なしになり、次にChromeも応答なしに、さらにExplorerと…まあ、予想通り速いペースでメモリをむしばみました。

で、さすがに無理だなと思いまずCtrl + Shift + Escを押しました。タスクマネージャを直で起動するショートカットです。

まあ、出ませんよね。

なので一応と、Ctrl + Alt + Delを押しました。

しばらくすると画面が暗転し、いつもの「タスクマネージャ」や「ロック」といった文字だけ出てくる画面が表示されるかなと思いきや、

サインイン プロセスで Ctl + Alt + Del キーが押されたときに、セキュリティ オプションとサインイン オプションが表示できませんでした。 Windows が応答していない場合は、ESCキーを押すか、電源スイッチを使って再起動して下さい。

というウィンドウが。

え、あの画面、「セキュリティ オプションとサインイン オプション」なんていう名前だったの?

Windows NT で 変わった Ctrl + Alt + Del

そもそも、このCtrl + Alt + Delなんですが、Windowsだけのキーコンビネーションではないらしい。

Control-Alt-Delete - Wikipedia

かなり昔からあるみたいで、伝統的なキーコンビだそうです。

当初の意味としては、要するに再起動。ソフトリブートとかハードリブートの違いはあれど、押せば再起動するよっていう非常用のコマンドだったらしい。

MS-DOS、その後継であるWindows 9x系もその流れを受けていて、2回押すと再起動する。いやMeで何度も押したけど再起動した試しはありませんでした。

Windows NTは、このキーコンビに「セキュリティオプション」というダイアログが割り当てられるみたい。XPのログイン時に求められたことがあります、このキーコンビ。

Wikipediaの内容から考えるに、winlogon.exeがプロセスID:4で起動していて、Windowsカーネルがそれに対してのみこのキーコンビイベントを発するので、偽装された画面ではこのキーコンビを受け付けることができないから安全だよっていうことなんですね。んなもんサラリーマンにわかるか。

winlogon.exeが画面を出せなかったということ、すなわち

今回のようにCtrl + Alt + Delが押されたとき、winlogon.exeセキュリティ オプションとサインイン オプション画面を出すようです。

ってことでwinlogon.exeも調べてみました。

1週間で学ぶIT基礎の基礎 - Windowsユーザーのためのワンポイント・レッスン 第62回:ITpro

@IT: BOOK Preview:インサイドMicrosoft Windows 第4版 上 第2章 システムアーキテクチャ 2.4.7 システムプロセス/まとめ

Winlogon - Wikipedia

Systemプロセスの子の子であり、さらにログイン画面を出すプロセスということです。手持ちのWindows10でSystemExplorerというソフトを使うと、Systemの子、つまりSystemが直接呼んでいる形になっています。

Systemカーネルとほぼ同義(カーネルの仮想プロセスの一つ)なので、そこから呼ばれるsmss.exewinlogon.exeはかなり上位のプロセスですね。

しかし、カーネルレベルではなく、ユーザレベルのプロセスだそうです。

ここからはあくまで推察ですが、winlogon.exeがユーザレベルのプロセスのため強制的な権限は持っていないのではないか、と考えます。

カーネルから直接呼ばれるとも見て取れる非常に信頼できるプロセスですが、強制的な権限を持っていない以上、同列のユーザレベルプロセスがCPU・ディスク・メモリを独占してしまうと、他と同じように止まってしまうということなんでしょうね。

すると、Ctrl + Alt + Delを押しても処理ができず、止まってしまい最初のようなメッセージが表示される。

……本当にこんな設計だったんでしょうか?間違っていたらご指摘ください。

備忘録として

ちなみに今回はただメモリを食い荒らしただけで、CPUにとんでもない負荷をかけたわけではなかったためすぐになんとかなりました。

しかし次は、無限ループなどで止まってしまうこともあるかもしれない…。そうするとCPUを独占してしまって、本当にwinlogon.exeがびくともしなくなる可能性も、ある。

今度から、Windows NT系のCtrl + Alt + Del非常用と信用しないようにしよう。

そして、あの画面は「セキュリティ オプションとサインイン オプション」という名前の画面だということも、覚えておくことにします。

2016/12/20 タイトルがうろ覚えだったものを修正

初見でPCに引き出しを取り付けた件。

パソコンの中身を一度も確認せずにパーツを買うのはよしましょう、っていう備忘録。

7月ごろに買ったメインのPCなんですが、ATX用の一番大きいサイズのケースにほとんど何も載せず、 CPU:i7-6700 + メモリ:16GB + グラボ:なし + HDD:1TB + ドライブ:DVDという超基本的なスペックなんですね。

というわけでHDDスロットもドライブスロットもがら空きで、3,4枚スペースがあったんです。

前々から5インチドライブベイにつけられる引き出しがパーツショップに出ているのを見て、 机の上に散らかっているUSBメモリなんかを仕舞えたらいいなと思ってたんです。

でもまあ、グラボを載せるときとか一度中をあけて確認してから買おうと考えてはいました。一応。

アイネックス 5インチベイ小物入れ BB-03

この間、サブPC用のHDDを買ったときに、ついノリで買ってしまったんです。サブPCの中しか見ていないのに。

ねじ穴を確認し忘れた。

恥ずかしながら、5インチベイってねじ穴が上段と下段とついているんですね。

今まででもパソコンの中身を見たことはありましたが、5インチベイのねじ穴まではしっかりと確認したことがありませんでした。今回初めて、その事実を知りました。

で、何がいけなかったのかというと、パソコン側に上段のねじ穴しか開いていなかったという問題があったのです。

買ってきた引き出し側には上段と下段、両方の穴は開いているものの、付属のねじ4本に対応するねじ溝が付いている穴が下段のみで、上段の穴にはついておらず、自前でタッピングネジを買ってくださいと箱に書いてありました。

たぶんいいだろうと高を括っていたのですが、いざ開けてみると。

f:id:yuzutan_hnk:20161213011527j:plain:w300f:id:yuzutan_hnk:20161213011536j:plain:w300

下段の穴がない。片面にはあるにはあるけど、前側の穴は細い。

大きいほうの穴に合わせると、カバーがつけられるくらい引っ込んでしまいます。

f:id:yuzutan_hnk:20161213011507j:plain:w300f:id:yuzutan_hnk:20161213011457j:plain:w300

これはさすがにタッピングネジを買わなきゃいけないと思い、近所のホームセンターに走りました。いや歩いたんだけど。

丁度いいねじが売っていない。

ホームセンターについたはいいんですが、街中の小さめのホームセンターでして、スーパーくらいの広さしかない中に園芸品から日用品まで広く浅くおいている店舗だったんです。

目分量で太さ3mm~4mm、長さ5mm~6mmくらいが丁度いいだろうなと考えていたのですが、いざ売り場を見ると丁度いいのがない。

一番近いのは3mm×8mm。いや、長い。さすがに貫通する。

それより短いのは2.3mm×6mm。今度は細すぎる、いくらなんでも細いし、頭も小さい。

とりあえず両方とも購入しましたが、どう考えても後者は貧弱なので使わないことにして、3mm×8mmを使いました。しかし、しっかり泊まるところまで回すと案の定貫通しました……。

最終的にねじを加工した

家に電気工事を仕事にしている人がいるもので、たまたまその人がふらっと通りかかったので事情を話すと、

「ねじの先を切って短くすればいいんじゃないか」

という答えが返ってきました。たしかにタッピングネジが必要とはいえ、引き出しには既にガイド穴が開いているため先がとがる必要性はないので、削ってしまって問題はなかったのです。

ねじの先を切るなんてしたことないし、握力30kg前後の私が鉄の塊を切れるわけがないので、2000円のワインと引き換えにその人にやってもらいました。ペンチで切断するだけですが、相当大変そうでした。

ちなみに、ペンチをしっかりとあてて柄をトンカチで叩けば、非力でも切れるそうです。そりゃそうだ。

完成

というわけでなんとか無事に取り付けられることができました。

f:id:yuzutan_hnk:20161213012902j:plain:w300

いざ使うとめちゃくちゃ便利。もう一つくらいつけてもいいかもしれません。

しかし、次はこんな失敗はしないように、自分の物はしっかり把握するべきですね。はぁ。

Markdownでブログを書きたいと思っていた【自己紹介記事】

ブログって、案外続かないものですよね。

特に、いろんなブログサイトで独自記法HTML記法があって、 独自記法で書いていざHTMLタグを見てみると、

「うわぁ、このタグほんとに必要なのか…?」

という事態に陥り、結局HTMLを書き起こしてホームページ作ってるのとそんなに変わらない。 ならいっそのこと自分のホームページにbbsを実装したほうが早いんじゃないかと。 そんなこと私にはできないんだけど

いや、頑張ればできる。頑張ればの話。

というわけで、MarkdownというHTMLへの変換の仕様がよくわかっている記法で書いてみたかったのです。 はてなさん感謝です。


改めまして、ゆずたんと申します。

本職は日曜プログラマです。日曜といいますが平日もプログラムします。むしろ平日の昼間にプログラミングしてます。

できる言語としては、HSPが一番でしょうか。 C#VB.NETVBAあたりは書けます。 JavajavascriptActionScriptあたりは一応読めます。 ほかの言語は触れる時間があれば触ってみたいです。

ネットでは、YouTubeを中心に楽曲のアレンジを投稿しています。

オリジナル曲もいくつか作ったことがありますが、アレンジのほうが圧倒的に多いです。 聴きたい方はこちらからどうぞ。

という、非常に馴染みにくい活動をしています。怖がらないでください、襲ったりしませんから。

これからこのブログには、プログラムの備忘録を中心に掲載していきたいと思っています。 ほかにも、音楽の小ネタやいろいろな告知があれば掲載します。現状あるとは言っていません。

このブログを見て、役に立ったり、笑顔になったり、ラジバンdする人がいればうれしい限りです。 そういうブログにしていきたいです。

それでは、よろしくおねがいします。