Hangup 後に落ちた?No.05269
ひろ さん 01/07/05 10:31
 
 秀まるおさん今日は、ひろです。
 異常終了してしまったので、どの時点かハッキリ解らないのですが、
if( !dllfunc( "SetAutoPushTimer",10,"yes" ) )message "タイマーセット失敗";
question "回線を切断しますか?";
if( result ){
  if( !dllfunc( "Hangup" ) )message "回線切断失敗";
}

ENDING:
  execmacro macrodir + "\\turukame\\tkjsg.mac";
  endmacro;
といったマクロで回線切断後、異常終了しました。再現性は 100% ではあり
ませんが、取り敢えずご報告しておきます。なお tkjsg.mac はライブラリ
に登録済みの「鶴亀メールで Netnews」に含まれているマクロです。
 おちた環境は、Windows98+IE5.5+鶴亀 Ver.1.23 です。

23:15:57.860 ( 416) CSock::PostExit()
23:15:57.860 (1760) IDTIMER_SOCKET_END received
23:15:57.860 (1796) IDTIMER_TRANS_START post
23:15:57.860 (1550) IDTIMER_TRANS_START kill
23:15:57.860 (1571) IDTIMER_TRANS_END set
23:15:58.190 (1757) IDTIMER_TRANS_END kill
23:15:58.190 ( 101) EndSilentDialog()
23:15:58.190 (1825) TransDlgProc() WM_DESTROY
23:15:58.190 (  95) SilentDialogBox() exit
23:15:58.190 (2060) ProcessTransmitSub() ModelessDialog, TransDlgProc exit
23:15:58.190 ( 345) CSock::~CSock()
23:15:58.190 (2075) ProcessTransmitSub() delete pSock
23:15:58.300 (2146) ProcessTransmitSub() exit
23:15:58.300 (3052) LeaveTrans()
23:15:58.300 (5060) StartAutoDownTimer()
23:15:58.300 (5068) StartAutoDownTimer() set
23:17:43.750 (3039) EnterTrans(), dwRet = 0
23:17:43.750 (3047) EnterTrans() entered
23:17:43.750 ( 130) RASSUB::HangupDialupNetwork()
23:17:43.750 (3052) LeaveTrans()
********** 01/07/04 23:17:43.970 1.23  Exception
eax=96822A49 ebx=006DE828 ecx=C15B2C00 edx=0001A4C4 esi=00008868 edi=006D0000 ebp=006DE80C esp=006DE7D0 eip=057334FD
Stack Dump
BFF72317 00000000 00000113 0000016C 00063951 528F882C E91C528F 88888894
00030007 057334F1 0147793A 006DF64C BFF7186D 000041F7 006D0000 006DE85A
057334F1 BFF53BB5 00000000 00000113 0000016C 00063951 528F882C E91C528F
88888894 00030007 057334F1 0147793A 00000000 00000000 00000000 00000000
00000000 00000000 175710EE 00030007 057334F1 175710EE 39510000 016C0006
00000113 00000113 E91C1657 88C4006D 01130000 02AD02A8 3B7B88C4 0001167F
13370F00 01130000 0F00016C 39511337 03FF0006 0000004C 01130000 0000016C
13370F00 01130000 00000001 00010000 3AEE3AEE BFF714D9 0000015F 006DE8D4
FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Param#5  Param#6  Param#7  Param#8  Param#9  Param#10 MachineCode
006DE85A 057334F1 BFF53BB5 00000000 00000113 0000016C 00063951 528F882C E91C528F 88888894 00030007 057334F1 76 05 8D 54 24 0C 6A 05
00071757 34F10003 10EE0573 00001757 00063951 0113016C 01130000 16570000 006DE91C 000088C4 02A80113 88C402AD
0E4C3B64 0154840F 8B64DE8B 75F68534 0001B8E9 C2C95E5F 3B640006 840F124C E4EB013A 4C3B6466 2F840F02 64D9EB01

23:17:43.750 S 4140 00000440 004E 00000000 006DDA10
23:17:43.750 R 4147 00000440 004E 00000000 006DDA10
23:17:43.750 R  678 00000448 0007 00000410 00000000
23:17:43.750 R 2950 00000410 0007 00000750 00000000
23:17:43.750 S 2948 00000410 5477 00000044 00000000
23:17:43.750 R 2950 00000410 5477 00000044 00000000
23:17:43.810 S  671 00000448 000C 00000000 8476D004
23:17:43.810 R  678 00000448 000C 00000000 8476D004
23:17:43.810 S 4140 00000440 05F5 00000000 00000000
23:17:43.810 S  671 00000448 000D 00000100 006DE7A0
23:17:43.810 R  678 00000448 000D 00000100 006DE7A0
23:17:43.810 S 2948 00000410 000C 00000000 006DE7A0
23:17:43.810 S 2948 00000410 000D 000000FF 006DE3C0
23:17:43.810 R 2950 00000410 000D 000000FF 006DE3C0
23:17:43.810 R 2950 00000410 000C 00000000 006DE7A0
23:17:43.810 R 4147 00000440 05F5 00000000 00000000
23:17:43.810 S 2948 00000410 5477 0000002F 00000000
23:17:43.810 R 2950 00000410 5477 0000002F 00000000
23:17:43.810 S 2948 00000410 5477 0000002F 00000000
23:17:43.810 R 2950 00000410 5477 0000002F 00000000

[ ]
RE:05269 Hangup 後に落ちた?No.05271
秀まるお さん 01/07/05 11:37
 
 死んでる場所はまったく不明のようです。

 SetAutoPushTimer関数が原因か、それとも単に回線切断で起きるバグなのか
分からないので、出来たら次回死ぬまでSetAutoPushTimerを使わないで運用し
てみて欲しいです。

[ ]
RE:05271 Hangup 後に落ちた?No.05273
ひろ さん 01/07/05 11:57
 
 秀まるおさん今日は、ひろです。
>  死んでる場所はまったく不明のようです。
 Windows の出すエラーメッセージも記録しておけばよかったと後悔してい
ます。

>  SetAutoPushTimer関数が原因か、それとも単に回線切断で起きるバグなのか
> 分からないので、出来たら次回死ぬまでSetAutoPushTimerを使わないで運用し
 了解しました。それで一度様子を見てみます。

[ ]
RE:05271 Hangup 後に落ちた?No.05281
ポン太 さん 01/07/05 15:33
 
秀まるお さん、こんにちは。ポン太 です。


> SetAutoPushTimer関数が原因か、それとも単に回線切断で起きるバグなのか

ここの話とは関係ないのかもしれませんが、SetAutoPushTimer関数で落ちたこと
が2〜3回あります。何もメッセージが出ずに鶴亀メールが消えてなくなります。
再現方法がつかめていないので今まで報告しませんでしたが。

今までのパターンは、##n = dllfunc("SetAutoPushTimer", 30, "no"); の後の
question 文でダイアログを出して、しばらく経ってから「いいえ」を押したと
きに起こりました。ただテストでかなり繰り返したときは再現できなかったので、
これだけの条件ではないと思います。


2001/07/05(木) 15:26 ポン太

[ ]
RE:05281 Hangup 後に落ちた?No.05282
秀まるお さん 01/07/05 17:20
 
> ここの話とは関係ないのかもしれませんが、SetAutoPushTimer関数で落ちたこと
> が2〜3回あります。

 んじゃ、そこの処理がダメなんですね。

 けっこう強引なやり方でAutoPushしてるのがいけないのやら?。とりあえず
別の方式を考えてみます。

[ ]
RE:05281 Hangup 後に落ちた?No.05283
ひろ さん 01/07/05 17:34
 
 秀まるおさん、ポン太さん今日は、ひろです。
> 今までのパターンは、##n = dllfunc("SetAutoPushTimer", 30, "no"); の後の
> question 文でダイアログを出して、しばらく経ってから「いいえ」を押したと
> きに起こりました。
 私の場合もダイアログ表示直後ではなく、暫くたってから押しました。
ひょっとしてユーザがボタンを押すタイミングと、SetAutoPushTimer の設
定に従って押されるタイミングとが重なると、問題が発生するということで
はないでしょうか?

[ ]
RE:05283 Hangup 後に落ちた?No.05284
ポン太 さん 01/07/05 17:49
 
ひろ さん、こんにちは。ポン太 です。

>ひょっとしてユーザがボタンを押すタイミングと、SetAutoPushTimer の設
>定に従って押されるタイミングとが重なると、問題が発生するということで
>はないでしょうか?

私もこれを疑って、かなりの回数タイミングをはかりながらテストしてみたので
すが、残念ながら今まで再現できずにいます。


2001/07/05(木) 17:47 ポン太

[ ]
RE:05282 Hangup 後に落ちた?No.05348
ひろ さん 01/07/15 01:43
 
 秀まるおさん今日は、ひろです。
>  けっこう強引なやり方でAutoPushしてるのがいけないのやら?。とりあえず
> 別の方式を考えてみます。
 マクロを簡単にして再度試してみました。
loaddll "tkinfo.dll";
#n = dllfunc("SetAutoPushTimer", 10, "yes");
question "回線を切断しますか?";
if( result ){
  if( !dllfunc( "Hangup" ) )message "回線切断失敗";
}
freedll;
で、10 秒以内に question のダイアログを閉じると落ちます。想像すると、
10 行後にSetAutoPushTimer の処理を実行しようとしているのに、
tkinfo.dll がアンロードされていてエラーになっているということではあ
りませんか? ただそのわりには saveas とかは問題ないんですよね。

[ ]
RE:05348 Hangup 後に落ちた?No.05349
秀まるお さん 01/07/15 15:16
 
>想像すると、
>10 行後にSetAutoPushTimer の処理を実行しようとしているのに、
>tkinfo.dll がアンロードされていてエラーになっているということではあ
>りませんか?

 まず、再現テストしたら、いきなり死にました。しかし、その後は何回やって
も死にませんでした。

 でもって、たしかにfreedllの所でtkinfo.dllが解放されつつも、タイマーは
そのままセットされたままになることがありました。

 ということで、DLLが解放されるタイミングでタイマーを終了させるように修
正してみます。

[ ]
RE:05349 Hangup 後に落ちた?No.05352
ひろ さん 01/07/16 00:22
 
 秀まるおさん今日は、ひろです。
>  ということで、DLLが解放されるタイミングでタイマーを終了させるように修
> 正してみます。
 取り敢えず、この線でよろしくお願いします。

[ ]