[リストへもどる]
一括表示
タイトルcpxのCodeGuardによる調査
記事No153
投稿日: 2007/03/04(Sun) 01:57
投稿者うぇいく   <weyk@nifty.com>
こんにちは。

 OTN-JPの掲示板群が新しくなったのにあわせて、cpxを作成しているのですが・・・どうにも、投稿処理のあたりで、90%ぐらいの確率(?)で落ちます。投稿で落ちていない場合でも、続く(投稿と同一の巡回の)読み取りで落ちたり、終わった後で再度巡回かけると落ちたり(メモリアクセス違反。)。試した感じでは、
・該当のcpxを使わなければ落ちない。
・投稿をせずに巡回を繰り返している分には落ちない。
・落ちるのは、7割以上がcmnMakePostData。
・投稿予約まで作って、一旦CMNを終了し、再度起動後、予約のある掲示板だけを巡回しても落ちる。
・が、同一の投稿でも、やり直して(何度目かに)落ちないこともある。
という感じです。現象からすると、まぁ、メモリ周りのエラーなんですが・・・

DBSやTorbuC++で、CodeGuardを有効にして見た感じだと、どーも、関係ないところばかりがひっかかって、あまり役に立たないような・・・・?
ひょっとして、
・cmnで確保して、cpxで解放。
・cpxで確保して、cmnで解放。
というあたりが、みな、ひっかかってくるのでしょうか・・・?
# だとすると、cpxをチェックするには、cmnもCodeGuard有効にしないと駄目?

なにか、良い方法はありますでしょうか?
# 統合環境から試しても、落ちている該当のスレッドでは、呼び出し履歴にcmn(今試したのでは、00470e2c)しかなくて判らない・・・うーむ。

他のcpxと違いそうなところは、
・投稿コードがUTF8。
・bSingleThreadがtrue。
・OptionDataに、「人間が見るための」データとして、漢字とタグをそのまま埋めているものもある(人間に、x-hogehoge=aaとかの形式で見せても意味が無いため。OptionDataが空のものでもエラーが出ているから、たぶん、関係無い・・・と思う。)
・上記とは別に、*.frmにより$X(x-hogehoge)な項目あり。
・PostParamは、cpxSendMes内で生成(cmnWriteBBSHeadでも、一応書いてます)。
あたりでしょうか。
-- CMN v0.50dβ --

タイトルRe: cpxのCodeGuardによる調査
記事No154
投稿日: 2007/03/05(Mon) 20:51
投稿者DECO
うぇいくさん、こんにちは。

デバッグの難しいところに突入してしまったようですね・・・。(^o^;)

>・投稿予約まで作って、一旦CMNを終了し、再度起動後、予約のある掲示板だけを巡回しても落ちる。

ということは、投稿予約されている発言データをcmnがcpxに渡す所か、cpx内の投稿ルーチンまたは後処理あたりが匂うということになりそうですね。

>・cmnで確保して、cpxで解放。
>・cpxで確保して、cmnで解放。
>というあたりが、みな、ひっかかってくるのでしょうか・・・?

だとすると、他のcpxも全ておかしくなる可能性があるということに・・・。

># 統合環境から試しても、落ちている該当のスレッドでは、呼び出し履歴にcmn(今試したのでは、00470e2c)しかなくて判らない・・・うーむ。

00470e2c は、cmn内のcpxとやり取りしている近辺ですが、詳細はわからないです・・・。
(いつも各バージョンのソースを保管してるのに、何故かv0.50dβだけ保管し忘れてその後あちこち触ってしまったので、厳密な場所特定ができなくなってしまいました・・・(>o<;))

>他のcpxと違いそうなところは、
>・投稿コードがUTF8。
>・bSingleThreadがtrue。
>・OptionDataに、「人間が見るための」データとして、漢字とタグをそのまま埋めているものもある(人間に、x-hogehoge=aaとかの形式で見せても意味が無いため。OptionDataが空のものでもエラーが出ているから、たぶん、関係無い・・・と思う。)
>・上記とは別に、*.frmにより$X(x-hogehoge)な項目あり。
>・PostParamは、cpxSendMes内で生成(cmnWriteBBSHeadでも、一応書いてます)。
>あたりでしょうか。

この中で関係ありそうなのはUTF8と$X(x-hogehoge)くらいなような気がしますが、うぅ〜ん・・・。

DECO

タイトルRe2: cpxのCodeGuardによる調査
記事No155
投稿日: 2007/03/06(Tue) 01:08
投稿者うぇいく   <weyk@nifty.com>
おそらく、他の人の作っているcpxの違いで、大物を忘れてました・・・
・DllMainの定義あり。
・Attachで、InitializeCriticalSectionと、GetProcessHeapあり。
・Detachで、DeleteCriticalSectionとあり。
・FolderStartで、WebRequestあり。
・FolderStartから、SetDataStart/SetDataEndを利用した、SetDataあり。

うーむ、どこから調べればよいのやら(笑)
-- CMN v0.50dβ --

タイトルRe2: cpxのCodeGuardによる調査
記事No157
投稿日: 2007/03/06(Tue) 16:21
投稿者うぇいく
 こんにちは。
とりあえず、cmnMakePostDataを呼び出さないように作り変えました。
# SJIS→UTF8変換、UrlEncode、key=valueの生成支援、の内部関数を実装。
なんとなく、動いているようです。

# SJIS→Unicode→UTF8の、2段変換が面倒・・・(Win32API使用)
-- CMN v0.50dβ --

タイトルRe3: cpxのCodeGuardによる調査
記事No159
投稿日: 2007/03/07(Wed) 06:11
投稿者DECO
うぇいくさん、こんにちは。

>とりあえず、cmnMakePostDataを呼び出さないように作り変えました。
># SJIS→UTF8変換、UrlEncode、key=valueの生成支援、の内部関数を実装。
>なんとなく、動いているようです。

これでうまくいくようですと、cmnMakePostData内部が怪しい可能性がありますね。
結構デバッグの面倒な所です・・・。
また状況を教えてください。

DECO

タイトルRe4: cpxのCodeGuardによる調査
記事No160
投稿日: 2007/03/10(Sat) 13:39
投稿者うぇいく   <weyk@nifty.com>
>また状況を教えてください。
今のところ、自前でPostDataを作成するように変更して以降、エラーは出てませんね・・・
とはいっても、メモリ系のエラーは、エラーの出ている処理が、原因とも限らないので、どーしたもんか というところでしょうか・・・
-- CMN v0.50dβ --

タイトルRe5: cpxのCodeGuardによる調査
記事No161
投稿日: 2007/03/14(Wed) 14:46
投稿者DECO
うぇいくさん、こんにちは。

>今のところ、自前でPostDataを作成するように変更して以降、エラーは出てませんね・・・

おろ・・・ってことは・・・・

>とはいっても、メモリ系のエラーは、エラーの出ている処理が、原因とも限らないので、

確かに・・・・。
長い目で様子見るしかないのかも・・・。(^o^;)

DECO

タイトルRe5: cpxのCodeGuardによる調査
記事No192
投稿日: 2007/03/29(Thu) 17:38
投稿者DECO
うぇいくさん、こんにちは。

ICmnPilot::cmnMakePostData を調べているのですが、今のところおかしなところが見つかっていません。
ICmnPilot::cmnMakePostData を使っていた時のソースってまだ残ってます?
もしあれば送っていただきたいのですが。

DECO