[スレッド全体]

2017/6/19 (月) 19:43:41 hagi 返信 削除
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0
[2401] 起動時、たまに落ちる
いつも使わせてもらってます。

Win7 32bit でver2.3.2.0 Unicode版を使っていますが、
たまに落ちるので、デバッグ版をコンパイルして
再現するまで起動/終了を繰り返しました。
すると、必ず

sakura_core/util/shell.cpp 内119行の
SHGetSpecialFolderLocation()

で失敗します。

どうやら正しく解放できていないかと思われますが
他の方は、いかがでしょうか?おま環なのかもしれません。

ちなみにこの関数はもうサポートされないそうで
いずれは SHGetFolderLocation() に代わらないといけないようですが

https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb762203(v=vs.85).aspx

ANSIとコードが共有ならば DllGetVersion() で判定するしかないですかね?。

https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb776779(v=vs.85).aspx

2017/6/21 (水) 23:02:52 ばぼ 返信 削除
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
[2404] Re:起動時、たまに落ちる
こんばんは。

▼ hagiさん
> すると、必ず
> 
> sakura_core/util/shell.cpp 内119行の
> SHGetSpecialFolderLocation()
> 
> で失敗します。

64bit版windowsで試した限り再現しませんでした。
具体的にどうなって落ちる(デバッグブレークする)かまで書いていただけると、
より意味のあるレスを返すことができるような気がします。たぶん。

単に想像ですが、メモリ解放周りのコードがおかしい気がします。
CRTでいうところの「ヒープが壊れています。」的なエラーがでて止まったのでは?

そして、同ファイル内112行目の変数型が怪しいな、と。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/bb762190(v=vs.85).aspx

In its place, programs can call the equivalent (and easier to use) CoTaskMemAlloc and CoTaskMemFree.


121行目の呼出し結果によらず、
122行目で解放に行ってるあたり。
確保できてないのに解放したから
再確保しようとした瞬間に落ちる、と。


該当コードはv2専用なので
windows2000で動作できる関数ならば使ってよい認識です。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.000][st:0.000]