xtne6f / EDCB

BonDriver based multifunctional EPG software
Other
165 stars 37 forks source link

work-plus-s-200710 以降、BonDriver_BDAT で予約開始処理に失敗する #39

Closed hayashikejinan closed 4 years ago

hayashikejinan commented 4 years ago

work-plus-s-200516 までは問題なく録画が開始されることを確認しました。 work-plus-s-200710 以降、BonDriver_BDAT での予約は録画に至らず。 録画結果は「録画開始処理に失敗しました」とのメッセージ。

xtne6f commented 4 years ago

work-plus-s-200710以降のEpgDataCap_Bon.exe単体では、起動や即時録画できますか? また、これ以降のEpgDataCap_Bon.exeでは設定項目に「BonDriverについてのデバッグ出力を増やす」を追加しているので、 これを有効にしてログファイルを保存してみて、どのようなログ出力の後に不具合が起きるか確認してもらえると嬉しいです。

hayashikejinan commented 4 years ago

Q. work-plus-s-200710以降のEpgDataCap_Bon.exe単体では、起動や即時録画できますか?

A. 起動・即時録画ともに不可(1秒程度でアプリケーション落ち)

以下、ログ出力結果2種類です。

1. EpgTimer からの予約

[200808132523.414] ** LOG START ** [200808132523.423] Granted SYNCHRONIZE|PROCESS_TERMINATE|PROCESS_SET_INFORMATION to EpgTimer Service [200808132523.423] BonDriver_BDAT.dll [200808132523.912] CBonDriverUtil: #Open [200808132524.175] SetCh space 0, ch 5 [200808132524.175] CBonDriverUtil: #SetCh [200808132527.076] Global\EpgDataCap_Bon_UDP_PORT_2130706433_1234 [200808132527.102] View_Ctrl_BonPipe_13080 [200808132527.102] Granted SYNCHRONIZE on Global\View_Ctrl_BonConnect_13080 to EpgTimer Service [200808132527.102] Granted GENERIC_READ|GENERIC_WRITE on \.\pipe\View_Ctrl_BonPipe_13080 to EpgTimer Service [200808132527.103] CMD2_VIEW_APP_SET_ID [200808132527.104] CMD2_VIEW_APP_SET_STANDBY_REC [200808132527.137] CMD2_VIEW_APP_SET_CH

2. EpgDataCap_Bon 起動から当該 BonDriver へ変更

[200808132712.413] ** LOG START ** [200808132712.420] Granted SYNCHRONIZE|PROCESS_TERMINATE|PROCESS_SET_INFORMATION to EpgTimer Service [200808132713.295] CBonDriverUtil: #Open [200808132713.553] SetCh space 0, ch 5 [200808132713.553] CBonDriverUtil: #SetCh [200808132713.800] Global\EpgDataCap_Bon_UDP_PORT_2130706433_1234 [200808132713.834] View_Ctrl_BonPipe_25464 [200808132713.835] Granted SYNCHRONIZE on Global\View_Ctrl_BonConnect_25464 to EpgTimer Service [200808132713.835] Granted GENERIC_READ|GENERIC_WRITE on \.\pipe\View_Ctrl_BonPipe_25464 to EpgTimer Service [200808132715.554] ★Ch Change 0xFFFF 0xFFFF => 0x7D12 0x7D12 [200808132715.635] COneServiceUtil::SetPmtPID 0xffff => 0x0101 [200808132715.876] CBonDriverUtil: #Closing [200808132716.023] CBonDriverUtil: #Open [200808132716.282] SetCh space 0, ch 1 [200808132716.282] CBonDriverUtil: #SetCh`

xtne6f commented 4 years ago

ありがとうございます。見たところOpen自体は成功していて、BonDriverのSetChannel()呼び出し後に落ちてますね。ただ、実際にSetChannel()の内部が原因か、その後次のログが出る前に落ちたのかは確定しません。

EpgDataCap_Bon.exeと同じフォルダにEpgDataCap_Bon.errが作成されていませんか? もし作成されているなら、EpgDataCap_Bonのビルド時に同時に作成されたEpgDataCap_Bon.pdbというファイルをEpgDataCap_Bon.exeと同じフォルダに置いて、もう一度エラーを発生させてみてください。 落ちた場所を表す正確なスタックトレースがとれるはずです。

また、work-plus-s-200516からwork-plus-s-200710の間の変更で、EpgDataCap_Bon.exeに関係しそうなものだけを除外したタグを作成しました。 https://github.com/xtne6f/EDCB/releases/tag/for-issue39-a はコミット 91333e653172ea4385b9e3ceac6d779cd126b01c を https://github.com/xtne6f/EDCB/releases/tag/for-issue39-b はさらにコミット 097f6efde64cae1ab23c99b7b04f14e18c8d56be を取り消したものです。 これらをビルドして、EpgDataCap_Bon.exeの挙動に変化がないか確認願います。 その際、ビルド環境や起動場所は一切変更しないでください (work-plus-s-200516で正常に動いているものからEpgDataCap_Bon.exeだけを入れ替えてください)。 BDATのBonDriverはやや特殊で、内部で使用されているCOMオブジェクトから先がおそらくブラックボックスなので、起動場所などの影響がないとは言い切れないためです。

hayashikejinan commented 4 years ago

返信ありがとうございます、提示いただいたものたちをテストおよび掲載します。

落ちた環境での EpgDataCap_Bon.err

内容は以下

ExceptionCode = 0xC0000005 Trace00 0x00511715 = 0x00511630(CPacketInit::GetTSData) + 0xE5 Trace01 0x00511715 = 0x00511630(CPacketInit::GetTSData) + 0xE5 Trace02 0x00502595 = 0x00502540(CBonCtrl::RecvCallback) + 0x55 Trace03 0x0050680D = 0x005067F0(std::_Func_impl_no_alloc<,void,unsigned char *,unsigned long,unsigned long>::_Do_call) + 0x1D Trace04 0x00507C3E = 0x00507B60(CBonDriverUtil::DriverWindowProc) + 0xDE Trace05 0x75E9D9CB = 0x75E9D980(AddClipboardFormatListener) + 0x4B Trace06 0x75E946EA = 0x75E93F40(GetClassLongW) + 0x7AA Trace07 0x75E93A5D = 0x75E92C40(GetSystemMetricsForDpi) + 0xE1D Trace08 0x75E926CF = 0x75E92660(SendMessageW) + 0x6F Trace09 0x00507F53 = 0x00507B60(CBonDriverUtil::DriverWindowProc) + 0x3F3 Trace10 0x75E9D9CB = 0x75E9D980(AddClipboardFormatListener) + 0x4B Trace11 0x75E946EA = 0x75E93F40(GetClassLongW) + 0x7AA Trace12 0x75E92A1A = 0x75E927D0(DispatchMessageW) + 0x24A Trace13 0x75E927E0 = 0x75E927D0(DispatchMessageW) + 0x10 Trace14 0x00507AA9 = 0x00507330(CBonDriverUtil::DriverThread) + 0x779 Trace15 0xEC83F8E4 = ? Trace16 0x76B5505F = 0x76B55000(o_iswdigit) + 0x5F Trace17 0x770EF989 = 0x770EF970(BaseThreadInitThunk) + 0x19 Trace18 0x77E174A4 = 0x77E173C0(RtlGetAppContainerNamedObjectPath) + 0xE4 Trace19 0x77E17474 = 0x77E173C0(RtlGetAppContainerNamedObjectPath) + 0xB4 0x00500000 - 0x00578FFF = EpgDataCap_Bon.exe 0x77DB0000 - 0x77F52FFF = ntdll.dll 0x770D0000 - 0x771BFFFF = KERNEL32.DLL 0x76650000 - 0x76862FFF = KERNELBASE.dll 0x77D30000 - 0x77D92FFF = WS2_32.dll 0x77A60000 - 0x77B19FFF = RPCRT4.dll 0x75E60000 - 0x75FF2FFF = USER32.dll 0x73CA0000 - 0x73EAFFFF = COMCTL32.dll 0x76000000 - 0x76017FFF = win32u.dll 0x73B10000 - 0x73C97FFF = dbghelp.dll 0x77C10000 - 0x77CCEFFF = msvcrt.dll 0x77330000 - 0x77352FFF = GDI32.dll 0x76B10000 - 0x76C2FFFF = ucrtbase.dll 0x768C0000 - 0x76999FFF = gdi32full.dll 0x76570000 - 0x765EAFFF = msvcp_win.dll 0x77990000 - 0x77A3EFFF = COMDLG32.dll 0x76290000 - 0x7650FFFF = combase.dll 0x76110000 - 0x76196FFF = shcore.dll 0x76870000 - 0x768B4FFF = SHLWAPI.dll 0x773E0000 - 0x7798FFFF = SHELL32.dll 0x77360000 - 0x773D8FFF = ADVAPI32.dll 0x77B20000 - 0x77B94FFF = sechost.dll 0x761A0000 - 0x76282FFF = ole32.dll 0x73940000 - 0x73953FFF = VCRUNTIME140.dll 0x738B0000 - 0x73920FFF = MSVCP140.dll 0x76C30000 - 0x76C54FFF = IMM32.DLL 0x71600000 - 0x71621FFF = MacType.dll 0x715B0000 - 0x715F6FFF = Easyhk32.dll 0x71130000 - 0x7120DFFF = MacType.Core.dll 0x70650000 - 0x70B64FFF = d2d1.dll 0x6FA80000 - 0x6FC8BFFF = dwrite.dll 0x765F0000 - 0x7664BFFF = bcryptPrimitives.dll 0x72B60000 - 0x72B6EFFF = kernel.appcore.dll 0x71A30000 - 0x71AA3FFF = uxtheme.dll 0x5FD70000 - 0x5FD92FFF = EpgDataCap3.dll 0x72BA0000 - 0x72BC8FFF = ntmarta.dll 0x76030000 - 0x76102FFF = MSCTF.dll 0x769A0000 - 0x76A35FFF = OLEAUT32.dll 0x71930000 - 0x719C3FFF = TextShaping.dll 0x6E420000 - 0x6E4D9FFF = textinputframework.dll 0x6E100000 - 0x6E37DFFF = CoreUIComponents.dll 0x6E380000 - 0x6E41AFFF = CoreMessaging.dll 0x6E020000 - 0x6E0FDFFF = wintypes.dll 0x76A40000 - 0x76ABDFFF = clbcatq.dll 0x6BE90000 - 0x6CE98FFF = ATOK31TIP.DLL 0x70550000 - 0x70555FFF = MSIMG32.dll 0x73F80000 - 0x73F87FFF = VERSION.dll 0x6DFE0000 - 0x6E01EFFF = pdh.dll 0x6DE40000 - 0x6DFD2FFF = Atok31De.dll 0x730E0000 - 0x73105FFF = dbgcore.DLL 0x73110000 - 0x7311FFFF = wkscli.dll 0x712A0000 - 0x712ADFFF = cscapi.dll 0x73350000 - 0x73370FFF = SspiCli.dll 0x6DDB0000 - 0x6DE31FFF = twinapi.dll 0x6DC20000 - 0x6DDAFFFF = twinapi.appcore.dll 0x6D880000 - 0x6DC1DFFF = OneCoreUAPCommonProxyStub.dll 0x72BD0000 - 0x72C21FFF = mswsock.dll 0x63800000 - 0x6384CFFF = Kazahook32.dll 0x770A0000 - 0x770A5FFF = PSAPI.DLL 0x703A0000 - 0x703F2FFF = OLEACC.dll 0x6FEC0000 - 0x6FEE5FFF = dwmapi.dll 0x79580000 - 0x795A6FFF = BonDriver_BDAT.dll 0x73960000 - 0x73987FFF = WINMM.dll 0x5DC10000 - 0x5DDA9FFF = quartz.dll 0x77A40000 - 0x77A58FFF = bcrypt.dll 0x72490000 - 0x72A97FFF = windows.storage.dll 0x72380000 - 0x723A3FFF = Wldp.dll 0x59FA0000 - 0x5A1BDFFF = msvidctl.dll 0x610A0000 - 0x610BEFFF = SLC.dll 0x61080000 - 0x6109BFFF = sppc.dll 0x71E10000 - 0x71E22FFF = CRYPTSP.dll 0x71DC0000 - 0x71DEEFFF = rsaenh.dll 0x73380000 - 0x73389FFF = CRYPTBASE.dll 0x5DF00000 - 0x5DF12FFF = MSDvbNP.ax 0x70C70000 - 0x70C87FFF = ATL.DLL 0x5FBD0000 - 0x5FBE7FFF = devenum.dll 0x75D90000 - 0x75DCAFFF = CFGMGR32.dll 0x76C60000 - 0x77093FFF = setupapi.dll 0x73860000 - 0x73883FFF = DEVOBJ.dll 0x76AC0000 - 0x76B06FFF = WINTRUST.dll 0x75C90000 - 0x75D8EFFF = CRYPT32.dll 0x730D0000 - 0x730DDFFF = MSASN1.dll 0x795B0000 - 0x795EEFFF = ksproxy.ax 0x5DE30000 - 0x5DE36FFF = ksuser.dll 0x631E0000 - 0x6336DFFF = d3d9.dll 0x795F0000 - 0x79605FFF = bdaplgin.ax 0x5FD60000 - 0x5FD6AFFF = vidcap.ax 0x5FDC0000 - 0x5FDF5FFF = mpg2splt.ax 0x79610000 - 0x79626FFF = psisrndr.ax 0x79630000 - 0x796A9FFF = psisdecd.dll 0x71780000 - 0x71928FFF = explorerframe.dll

work-plus-s-200516 から a, b のテスト

for-issue39-a: 挙動に変化なく問題なし for-issue39-b: 挙動に変化なく問題なし

xtne6f commented 4 years ago

work-plus-s-200710のEpgDataCap_Bon.exeを再度ビルドして同様に入れ替えて、問題が発生するかどうか確認お願いできますか? 問題が発生するなら、コミット 91333e653172ea4385b9e3ceac6d779cd126b01c に直接的あるいは間接的な影響があることが確実になります。

hayashikejinan commented 4 years ago

申し訳ありません、前回のテストにて EpgDataCap_Bon.exe の入れ替えがきちんとできておらず、再度検証しました。

work-plus-s-200516 から a, b のテスト

for-issue39-a: 挙動に変化なく問題なし EpgDataCap_Bon.exe が落ちる for-issue39-b: 挙動に変化なく問題なし EpgDataCap_Bon.exe が落ちる

work-plus-s-200710

同上

となりました、こちらのミスで1レス無駄にしてしまい申し訳ないです。

xtne6f commented 4 years ago

ありがとうございます。であればwork-plus-s-200516のソースを再度ダウンロード、ビルドして同様に入れ替えて、 EpgDataCap_Bon.exe が落ちないことを確認お願いします(ビルド環境などの影響がないか確実にするためです)。

hayashikejinan commented 4 years ago

work-plus-s-200516 を再ビルドして入れ替え、EpgDataCap_Bon.exe が落ちないことを確認しました。

xtne6f commented 4 years ago

https://github.com/xtne6f/EDCB/releases/tag/for-issue39-c (for-issue39-bからさらにコミット 17b8965988d0e66c7a7bec2c1e64214f93565df5 を取り消したもの) についても同様に確認お願いできますか? 何度もすみません。

hayashikejinan commented 4 years ago

for-issue39-c、確認いたしました。 問題は発生せずです。

xtne6f commented 4 years ago

そうですか… とすればコミット 17b8965988d0e66c7a7bec2c1e64214f93565df5 がなんらかの影響を与えているのかもしれません。 現行のwork-plus-sからコミット 17b8965988d0e66c7a7bec2c1e64214f93565df5 だけを取り消したものが以下になります。 https://github.com/xtne6f/EDCB/commits/for-issue39-d おそらく問題は発生しないはずです。

ただ、コミット 17b8965988d0e66c7a7bec2c1e64214f93565df5 にバグを含んでいるとは今のところちょっと考えづらいです。特に「BonDriverについてのデバッグ出力を増やす」をオフにしている場合は、挙動の違いは何もない、と言わざるを得ないです。 手詰まりです。

hayashikejinan commented 4 years ago

おっしゃる通り最新ソースコードからコミット 17b8965 だけを取り消したものだと問題が発生しませんでした。 BonDriver 自体のデバッグ周りに問題があるとは思いもよらず、手間をいただいてすみません。 BonDriver の更新などがあればまた試して追記したいと思います。 ありがとうございました。

xtne6f commented 4 years ago

力足らずですみません。(EDCB側BonDriver側双方について)タイミングに強く影響されるバグを元々含んでいて、コミット 17b8965988d0e66c7a7bec2c1e64214f93565df5 がその引き金を引いている可能性は大いにあります。 返信頂いたスタックトレースから、BonDriverのGetTsStream()が返すバッファが不正なのではないかと若干疑っていますが、BonDriver_BDAT(1.09)のソースコードに瑕疵はなさそうで、なんとも言えないです。 // 一つだけ気がかりなのはBDATのソースコードにある_B25というコンパイルスイッチで、これで内部的にデコードなどが行われていればまた話は変わってきます。

hayashikejinan commented 4 years ago

ソースコードは BonDriver_BDAST Ver.1.01 を使っています。 BonDriver_BDAT(1.09) でも試してみましたが、改善はありませんでした。 ちなみに _B25 のコンパイルスイッチはコメントアウトしているままです。

hayashikejinan commented 4 years ago

その後ですが、BonDriver を https://github.com/radi-sh/BonDriver_BDA に変更し、問題が起きておりません。 この度はありがとうございました。

xtne6f commented 4 years ago

ありがとうございます。了解です。 BDA系BonDriverで現在もっともアクティブなのは@radi-sh氏版のようですし、 (スッキリとはしませんが)BonDriver_BDAST(Ver.1.01)側に何かあるのだろう、と思うことにします。 しばらくは掲示板のPLEX系のスレも不定期にチェックしておきます。