From: Joshua M. <xm...@me...> - 2010-03-26 05:50:01
|
Ok, I understand now. Yes that is a bug -- and an interesting one. Basically, its doing: R1 = object; // R1 has one retain Temp = R1; / R1 = object.subobject Release Temp (causing an implicit release of the object now in R1) retain R1 (so we don't lose it). Basically, the fix is to just emit the retain instruction before the rtmp release. In the future, we will notice that the back to back retain/release is not necessacry. http://xmlvm-reviews.appspot.com/33001 is a fix -- i will submit it to the trunk after the review completes. Panayotis: Thanks for finding the bug! I appreciate the feedback, as well as your clear description of the issue and how to reproduce it. Please let me know if you find anything else. all :) -- Joshua Melcon On Thu, Mar 25, 2010 at 3:06 PM, Panayotis Katsaloulis <pan...@pa...> wrote: > Yes these applications work. > > If you just try to convert the java source code I gave to you though, you > will see the error :) > Just try ;) > To be fair, I've also checked a lot of code, from my own appplications and > test cases and this was the only problem found :) > > Still, it is a bug ;) > > > > -- > Panayotis > 25 Μαρ 2010, 9:12 μ.μ., ο/η Joshua Melcon <xm...@me...> έγραψε: > > If the last retain is failing it indicates that there is an issue related to > the releasing /retaining/nulling of size_org_xmlvm_iphone_CGSize. > > I have run Xokoban, Afireworks, and another CCed program and not encountered > any problems. It is possible that you have found a case which we do not > handle correctly that doesn't show up in those programs. Later tonight I > can attempt to reproduce this error using one of our demo apps -- > > Could you confirm that the Xokoban and Afireworks demo apps are working for > you? > > Thanks, > > > -- Joshua Melcon > > > 2010/3/25 Panayotis Katsaloulis <pan...@pa...> >> >> On 25 Μαρ 2010, at 8:02 μ.μ., Joshua Melcon wrote: >> >> > _r2.o = [((org_xmlvm_iphone_UIView*) _r0.o) getFrame__]; // R2 comes >> > back ref count += 1 because its a get function >> > _rtmp.o = _r2.o; // We are overwriting R2 on the next line, so we >> > need to free our +1 afterwords >> > _r2.o = ((org_xmlvm_iphone_CGRect*) _r2.o)->size_org_xmlvm_iphone_ >> > CGSize; // R2 has a new value, the old r2 (in tmp) is not needed >> > [_rtmp.o release]; _rtmp.o = [NSNull null]; // release the += from >> > the first line >> > [_r2.o retain]; // retaining the value from _r2, presumably because >> > we will be returning soon (can't tell without the rest of the code). >> > >> > But, based on this code sequence, everything looks correct? How does >> > _r2.o retain break things? >> >> >> It says that it tries to retain am already fee'd object. >> >> Try it for yourself and see ;) >> >> ------------------------------------------------------------------------------ >> Download Intel® Parallel Studio Eval >> Try the new software tools for yourself. Speed compiling, find bugs >> proactively, and fine-tune applications for parallel performance. >> See why Intel Parallel Studio got high marks during beta. >> http://p.sf.net/sfu/intel-sw-dev >> _______________________________________________ >> xmlvm-users mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlvm-users > > |