Yeah, it could run more than once, but at least the result will always be the same. It would be nice to avoid the unnecessary duplication, but it seems fast enough that it can wait.
- Josh On Oct 22, 2015 7:52 PM, "Alex Harui" <aha...@adobe.com> wrote: > Good job figuring that out! I think it still means that multiple calls to > initExterns could be launched, so maybe someday we need to put in official > thread management, but I think it is good enough for now. > > -Alex > > On 10/22/15, 3:12 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > > >Problem solved. I discovered that isExternal() could be called before > >initExterns() returned. The externs member variable would be non-null, but > >not all of the values had been added yet. I changed initExterns() so that > >it would add the values a local variable instead, and I waited to set the > >externs member variable until the end, when all values were guaranteed to > >be added. > > > >- Josh > > > >On Thu, Oct 22, 2015 at 2:39 PM, Josh Tynjala <joshtynj...@gmail.com> > >wrote: > > > >> I tried overriding setTargetSettings(), and that kept the LinkageChecker > >> from being created more than once. However, that did not fix the issue. > >>The > >> isExternal() method on the LinkageChecker is still sometimes incorrectly > >> returning false. I guess that was just a coincidence. > >> > >> I'll keep investigating because this is happening pretty frequently for > >> me. I used to have builds sometimes mysteriously fail on me before, and > >>I > >> now think it was from this same issue, but it was less frequent then. > >> > >> - Josh > >> > >> On Wed, Oct 21, 2015 at 6:03 PM, Alex Harui <aha...@adobe.com> wrote: > >> > >>> > >>> > >>> On 10/21/15, 5:35 PM, "Alex Harui" <aha...@adobe.com> wrote: > >>> > >>> > > >>> > > >>> >On 10/21/15, 4:20 PM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: > >>> > > >>> >>Is the compiler using more than one thread? Could different threads > >>>be > >>> >>calling isExternalLinkage(), and am I seeing a race condition? > >>> > > >>> >The compiler uses one thread for each .as file so yes, you are > >>>probably > >>> >seeing a multi-thread issue, although I haven’t checked the call stack > >>> >into that call to see if it is coming from threads. > >>> > >>> So I took a quick look and yes, that code gets called from within the > >>> threads. I don’t immediately see any reason you would get a different > >>> answer even if there was a race condition. But you might try > >>>overriding > >>> setTargetSettings and creating the linkageChecker as soon as the > >>> targetSettings are available and see if that helps. > >>> > >>> -Alex > >>> > >>> > >> > >