最新ptex-w32の実行エラーについて

最新ptex-w32の実行エラーについて

- 松山 道夫 の投稿
返信数: 11
長らく遠ざかっていて状況把握ができておりません。ご教示ください。

最新ptex-w32 (-w64) を CTAN (jaist.ac.jp) から入手し実行しようとしました。最小限 platex と pdf 化が出来ればよいため、minimal インストールを行っています。ただ tex.exe なり kpsewhich.exe なりを実行しようとしても、エラーポップアップがでます。「アプリケーションを正しく起動できませんでした。(0xc0000022) ...」

Windows7、64ビットです。Windows7 でも実行できますか? 環境構築不備でしょうか? (不足情報あれば提示します。)

DLL が存在いないためではないかと想像するのですが・・・
api-ms-win-core-winrt-error-l1-1-0.dll
api-ms-win-core-winrt-l1-1-0.dll
api-m-win-core-winrt-robuffer-l1-1-0.dll, etc.

松山 道夫 への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
> 最新ptex-w32 (-w64) を CTAN (jaist.ac.jp) から入手し実行しようと
> しました。最小限 platex と pdf 化が出来ればよいため、minimal
> インストールを行っています。ただ tex.exe なり kpsewhich.exe
> なりを実行しようとしても、エラーポップアップがでます。
> 「アプリケーションを正しく起動できませんでした。(0xc0000022) ...」
> Windows7、64ビットです。Windows7 でも実行できますか?
> 環境構築不備でしょうか? (不足情報あれば提示します。)

今までかなり長い間,TeX Live 等で Windows7 でも動いているよう
ですので,他の原因ではないかと思います。わからなくてすみません。

> DLL が存在しないためではないかと想像するのですが・・・
> api-ms-win-core-winrt-error-l1-1-0.dll
> api-ms-win-core-winrt-l1-1-0.dll
> api-m-win-core-winrt-robuffer-l1-1-0.dll, etc.

luatex 関係を除いて,静的リンクにしており,platex, kpsewhich 等
に於いては必要なものはバイナリに含まれているのではないかと
思います。

luatex 関係では上のような DLL が使用されますが,報告に基づいて
Windows7 で必要な DLL は含めているつもりです。
Akira Kakuto への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
> luatex 関係を除いて,静的リンクにしており,platex, kpsewhich 等
> に於いては必要なものはバイナリに含まれているのではないかと
> 思います。

不正確だったので,書きなおします。(ptex, kpsewhich は静的リンク
ではありません。)
大部分のバイナリ (ptex, eptex, uptex, euptex, tex, pdftex, ...)
では,古いコンパイラを使っているので,
上のような DLL は使用されません。

比較的新しいコンパイラを使っているものでは,luatex 関係を除いて
静的リンクにしていますので,必要なものはバイナリに含まれているの
ではないかと思います。

luatex 関係では,上のような DLL が必要ですが,Windows7 で必要な
ものは,ユーザからの報告に基づいて,含めているつもりです。
Akira Kakuto への返信

Re: 最新ptex-w32の実行エラーについて

- 松山 道夫 の投稿
ご連絡ありがとうございます。

下記 stackoverflow での症状と同等に見ています。
https://stackoverflow.com/questions/17023419/windows-7-64-bit-dll-problems
不足DLLかと列記してみたのは、上記と同様 DependencyWalkerで確認したものです。

全部を読みきっていませんが、Redistributable DLL 関連での欠如か、と確認を進め、一つには redist DLL 2015 がなかったので入れてみたり、redist DLL 2015-2019 を入れてみたりとしましたが、まだ解決に至りません。確認続けてみます。
松山 道夫 への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
32bit バイナリは動きますか?
こちらの Windows7 では TeX が走っていますが,
32bit マシンです。
Akira Kakuto への返信

Re: 最新ptex-w32の実行エラーについて

- 松山 道夫 の投稿
32ビットも動きません。同じエラー、同じDLLの欠如です(DependencyWalkerによる確認)。

2019/01/27 にダウンロードしていた tl-win64.zip 内の各exeでも同様でした。これらは当時動いていたように記憶しています。このため、現時点での当方マシン固有の問題であると考えます。お騒がせします。引き続き調べてみます。

前言訂正です。tl-win64.zip (2019/01/27時点) に含まれていた exe および dll は動作しました。(!?) はてさて、どういうことでしょう。

上記はとりあえず tex.exe だけを動作させ、動いたと申し上げました。いろいろ状況が複雑なようで、他について動かないものもあります。確認続けます。
Akira Kakuto への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
> 大部分のバイナリ (ptex, eptex, uptex, euptex, tex, pdftex, ...)
> では,古いコンパイラを使っているので,
> 上のような DLL は使用されません。

コンパイラが古い場合,直接上のような DLL は必要ありませんが,
標準 DLL を通して必要なものは勿論必要です。例えば
KERNEL32.DLL の場合,
API-MS-WIN-CORE-RTLSUPPORT-L1-1-0.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-0.DLL
API-MS-WIN-CORE-HEAP-L1-1-0.DLL
その他多く,に依存しています。これらは適当にアプデートした
OS に含まれているものと考えています。
松山 道夫 への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
> api-ms-win-core-winrt-error-l1-1-0.dll
> api-ms-win-core-winrt-l1-1-0.dll
> api-ms-win-core-winrt-robuffer-l1-1-0.dll, etc.

こちらの Windows7 には
api-ms-win-core-winrt-*.dll はありません。
(dependency walker はこれらが無いと言ってエラー)
然し,TeX は動いています。
TeX は 32bit, 64bit ともに,32bit Windows7 でビルドしたものです。
Akira Kakuto への返信

Re: 最新ptex-w32の実行エラーについて

- 松山 道夫 の投稿
これから鋭意確認しますが、たぶん解決しました。

CTAN から minimal インストールするということで、必要な *.tar.xz をダウンロードし解凍していましたが、その解凍は Cygwin の tar、xz を使っていました。これがよろしくなかったようです。texinstwin を用いて解凍したら実行できました。エラーもでませんでした。原因が腑に落ちませんが・・・

お騒がせしました。
なお Dependency Walker での確認は、このソフト自体、相当古く、最近の exe、dll 解析には利用できなさそうで、それに拠る確認は不適切でした。
松山 道夫 への返信

Re: 最新ptex-w32の実行エラーについて

- Akira Kakuto の投稿
> Cygwin の tar、xz を使っていました。

xz のバージョンによって,おかしなことになることがある,という
ことは,たまに TeX Live のインストールでも話題になることが
あります。texinstwin で使用している tar と xz は,
Unix で作成したアーカイブを Windows にインストールする際,
TeX Live で使用しているもので,おそらく大丈夫だと思います。
松山 道夫 への返信

Re: 最新ptex-w32の実行エラーについて

- はやて (h20y6m) の投稿
すでに解決されたようなので蛇足ですが。

> 「アプリケーションを正しく起動できませんでした。(0xc0000022) ...」

エラーメッセージの 0xc0000022 は STATUS_ACCESS_DENIED(アクセス拒否)ですので起動時に読み込もうとした DLL にアクセス許可がなかったのではないでしょうか。

> Cygwin の tar、xz を使っていました。

Cygwin は Windows の ACL をおかしくしてしまうことがあるようです。
Cygwin の tar が UNIX パーミッションを復元しようとしておかしな ACL を設定してしまったのかもしれません。
(tarball 内の *.dll のパーミッションが 666 なのが気になります。)

----------

api-ms-win-*.dll は特殊な DLL らしいです。
* ファイルとして存在しないものもある
* apisetschema.dllを介して転送される
参考:https://resemblances.click3.org/?p=1411

はやて (h20y6m) への返信

Re: 最新ptex-w32の実行エラーについて

- 松山 道夫 の投稿
細かな情報ありがとうございました。
なるほどと納得した次第です。

確認結果として、ほんの一部、ptex.exe、ptex.dll、kpathsea632w64.dll、eptex.dll だけ、Cygwin の tar、xz を用いて展開した後に、chmod 755 したら、前掲のエラーなく ptex.exe が実行できました。(正常に文書処理できるかどうかまでは確認してはいません。)