gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

User32 イベントID:1074 調査してみた

今日、午後2時過ぎに、突然ノートPCが再起動した。暑いし、熱暴走でもしたのかなーと、流そうとしていたのだけれども、気になったので原因を調べてみた。

イベントログを確認すると、システムログにタイトルのログが出力されていました。

全般タブには

次の理由で、プロセス c:\windows\system32\svchost.exe (ASUSU24E) は、ユーザー NT AUTHORITY\SYSTEM の代わりに、コンピューター ASUSU24E の 再起動 を始めました: オペレーティング システム: Service pack (計画済)
理由コード: 0x80020010

f:id:gaggit:20180715201348p:plain

 直前のシステムログとアプリケーションログを確認しましたが、特に原因となるようなイベントは、なし。ちなみにWindowsUpdate(月例パッチ)は3日ほど前に手動で適用済み。

 

 ネット上でイベントID 1074を検索しても、目ぼしい回答が見つからなかったので、観点を替えて、理由コード(0x80020010)で検索してみたところ、マイクロソフトのサイト(参照サイト)に理由コードのドキュメントがあったので、もう少し調査を進めてみた。

 

 理由コード:0x80020010は、これ一つで1つの意味を表しているわけではなく、コンビネーションで複数の意味合いを持たせていた。

 まずは、0x80000000 SHTDN_REASON_FLAG_PALNNED

Descriptionの記述を確認しても、英語で、シャットダウンは、計画済み。System State Data(SSD)ファイルにシステムの状態が書かれているとある。が、このファイルを生成するには、Windows Error Reportingの設定が必要とある。Windows Error Reporting(参照サイト)の設定には、レジストリを変更する必要があり、デフォルトは無効となっているようだ。

 次に、0x00020000 SHTDN_REASON_MAJOR_OPERATINGSYSTEM

Operating system issue.の1行のみ。OSの問題としか書かれていない。

 最後に、0x00000010 SHTDN_REASON_MINOR_SERVICEPACK

Sevice pack.の1行のみ。サービスパックの一言のみ。

 

結果として、電源供給のトラブルで再起動というところまでは判明しましたが、根本原因までは不明です。

User32 イベントID:1074 調査してみた(暫定対策) - gaggitのブログ

へ つづく

 

参照サイト:

System Shutdown Reason Codes | Microsoft Docs

Windows Error Reportを使ってプロセスがクラッシュした際のダンプファイルを取得できるようにする設定方法

Devel::NYTProfのプロファイラーを試しみた

3,4ヶ月前にPerlで200行ぐらいのコードを書いた。「Perlを最適化する

」サイトを参考にコードの最適化とスレッド化をして実行時間を短縮した。けれども、プロファイラーを使用してどこに時間がかかっているのか、知りたくなった。

 

 先ず、Devel::FastProfというプロファイラーをインストール使用しようとしたが、失敗。cpanの公式サイトを見ると、BUGSの見出しの下にNo Windows! No threadsとあるので、Window版ではインストールできないようだ。半日かかった。orz

 

 次に他のプロファイラに替わり、デファクトスタンドとなったDevel::NYTProfというNew York Timesの有志で作られたモジュールをインストール。

実行は、

perl.exe -d:NYTProf xxxxx.pl

 

実行結果は、オプションで指定しなければカレントフォルダにnytprof.outが作成される。これはDBファイルなので、そのまま見ることができず、

nytprofhtmlコマンドか、nyprofcsvコマンドを実行することによって、htmlファイルまたはcsvファイルが作成される。

どちらのコマンドも、カレントフォルダにnytprofというフォルダ内にモジュール単位にファイルが作成される。

フォルダ内にindex.htmlをブラウザで開くと、トップにグラフとその次にTop15のサブルーチン名称とコール回数や経過時間等が表形式で表示される。

 最下段には、ソースファイル毎に経過時間とさらにそのソースファイルのリンクが表示される。

リンクをクリックすると、ここでも、サブルーチンごとの経過時間の表が上にあり、下段には、ソースコードの1行毎経過時間が表示される。

 

これは、すごい!!

 

p.s.

参照サイトの一番下段は、Devel::NYTProfの作成者が書いたこのプロファイラの紹介と最適化の方法が書かれています。

 

参照サイト:

Perlを最適化する

Perl スクリプトで遅い場所を特定する方法 - Devel::Profiler / Devel::NYTProf - drk7jp

Devel::FastProf - "fast" perl per-line profiler - metacpan.org

Devel::NYTProf - Powerful feature-rich perl source code profiler - metacpan.org

http://assets.en.oreilly.com/1/event/45/Understanding%20and%20Optimizing%20your%20Code%20with%20Devel__NYTProf%20Presentation.pdf

オランダ坂珈琲邸 メール会員について

先日、オランダ坂珈琲邸のWiFiサービスについて書いたが、以前からあるメール会員サービスの登録方法について書いてみる。

お店に行けば、登録用のURLが記載された紙がレジにおいてあるが、ネットにはないようだ。

登録用URLは

http://kotakitaplus.jp/ozkxxx

xxxには、3桁の数字が入り、

001 東大和

003 東所沢店

004 西谷店

005 町田金井店

のようだ。

ブラウザに上記のアドレスを入力し、空メール送信のボタン押す。

メーラーに届いたURLにアクセスして、必要事項を入力する。

再度、メールが届くので、URLにアクセスして、ブックマークに登録。

 

 

 

 

オランダ坂珈琲邸でWiFiサービスが始まっていた

約2か月ぶりにオランダ坂珈琲邸に行ってみたら、WiFiサービスが始まっていました。

SSIDとパスワードは、以下です。

SSID:orandazakacoffee

PASS:non-password

 

あと、スタンプカードのサービスが終了していました。まー、こちらは、スマホの画面を見せたら、飲み物のお代わりのサービスがあるから、しょうがないかも。。。

 

突然、エクスプローラーとMicrosoft Edgeがおかしくなった

突然、エクスプローラーとMicrosoft Edgeがおかしくなりました。症状としては、エクスプローラーは起動しますが、ファイルを選択して、右メニューの表示がおかしくなります。また、Microsoft Edgeも同様に起動はしますが、数秒後に終了します。

 

イベントログもアプリケーションログにID:1000として、ログが出力されています。

詳細にログの調査は行っていませんが、対処方法として、再起動を3回行ったところ、エクスプローラーとMicrosoft Edgeとも無事に修復しました。

 

なんだか、気持ちが悪いです。

 

 

Perl File::ReadBackwards を使用してみた

 PerlでFile::ReadBackwardsモジュールを使用してみました。このモジュールは、ファイルを逆から読み込むので、ファイルの最後付近にある文字列を抽出したい場合に役立ちます。

使用しているPerlWindows版なので、このモジュールのレコードセパレータは\r\nなりますが、読み込むファイルはWindows版のcurlの-oオプションの出力ファイルなのに、なぜかレコードセパレータは\nでした。

幸い、このモジュールには、レコードセパレータを変更できるようにnewメソッドの第2引数で指定できます。

 

修正前:

my $bw = File::ReadBackwards->new($html_file);

 

修正後:

my $bw = File::ReadBackwards->new($html_file,"\n");

 

\nは、ダブルクォーテーションで囲ってください。シングルクォーテーションでは、\とnの文字列を改行として認識して、意図した動作をしません。

Perl readline() on closed filehandle

 普段は、あるディレクトリの下にファイルを作成していますが、今回、少しでも高速にしようと、RAMディスクのEドライブ直下に書き込みを行っていました。一度目は、ファイルのオープンからクローズまで正常に終了するのですが、再度、実行すると、再オープンに失敗し、タイトルのエラーとなりました。

修正前:

open(FD, "< E:text.log");

 

修正後:

open(FD, "< E:\\text.log");

 

PerlWindows版なので、ディレクトリの区切りには\を2度、重ねることは知っていましたが、ドライブとファイル名の間にも必要でした。

 

p.s.

また、しょうもないことで時間を食ってしまいました。orz