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
>>>
>>>
>>

Reply via email to