Ticket #33765

mrcImageClusterAnalysis

Eröffnet am: 2014-05-07 17:49 Letztes Update: 2014-05-11 22:53

Auswertung:
Verantwortlicher:
Typ:
Status:
Geschlossen
Komponente:
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

【問題内容】
	-AR設定無しのときにメモリー解放エラーが発生します。

【使用OS】Mac X10.8.5
【動作条件】(発生したときの設定)
	-i 入力ファイルリスト(ASCII: mrcファイルx3)
	-O

【エラー発生箇所】
ファイル名: /src/Objects/DataManip/mrcImage/src/lmrcImageClusterAnalysis.c
関数名: lmrcImageClusterAnalysis
	(246行目付近)
				flagNoValue = 0;
				mrcImageFree(&minCor, "in lmrcImageClusterAnalysis");
ここ->			mrcImageFree(&minOut, "in lmrcImageClusterAnalysis");
			  	minCor = cor;
			 	minOut = out;
				minInfo = linfo->arInitial;

【考察】
	解放済みのminOut.Imageをさらに解放しているためと考えます。
	-AR有りなら、AutoRotationCorrelationの結果として新規作成されたmrcファイルが書き込まれていますが、
	-AR無しなら、DistanceCalcやCorrelation後にminOutになるoutに代入処理が施されています。
	この代入処理が'='なので、代入元と代入先のImageが同じアドレスになり結果代入元のImageまで解放されていると思います。

【ソースコード(一部)】
ファイル名: /src/Objects/DataManip/mrcImage/src/lmrcImageClusterAnalysis.c
関数名: lmrcImageDistanceCalc0
	(81行目付近)(※ 63行目付近も同様)
		  if(linfo->flagAutoRotation) {
		  	distance = lmrcImageDistanceCalcByWardMethodWithAutoRotation(out, cor,
			                   clusterN,    clusterM, 
			                   numN, numM,
							   &(linfo->arInitial), linfo->correlationMode, linfo->mode);
		  } else {
		  	DEBUGPRINT("By Ward: ");
			distance = lmrcImageDistanceCalcByWardMethod(
					clusterN, clusterM, 
		                       numN, numM, 
		                       linfo->mode);
ここ->		*out = *clusterN;
			cor->Image = NULL;
		  }
	
【対策案】
	'='代入の代わりにlmrcImageCopyを使用すると実データのコピーをするので、元が解放されないようになると考えます。
	
(50行目付近: 関数の先頭に加える)
		mrcImageParaTypeRealCoord offset;
		offset.x = offset.y = offset.z =0;
(81行目付近)
//		*out = *clusterN;
		out->Header = clusterN->Header;
		mrcInit(out, NULL);
		lmrcImageCopy(out, clusterN, offset);

Ticket-Verlauf (3/3 Historien)

2014-05-07 17:49 Aktualisiert von: kinoshita-eos
  • New Ticket "mrcImageClusterAnalysis" created
2014-05-11 22:53 Aktualisiert von: tacyas
  • Lösung Update from Keine to Gefixt
Kommentar

ご指摘通りですね。 修正しました。

v2.0.13.p009 としてアップしています。
2014-05-11 22:53 Aktualisiert von: tacyas
  • Status Update from Offen to Geschlossen
  • Ticket Close date is changed to 2014-05-11 22:53

Dateianhangliste

Keine Anhänge

Bearbeiten

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Anmelden