Le 25/02/2012 07:25, lkcl luke a écrit :
> On Sat, Feb 25, 2012 at 2:09 AM, Peter Bittner<[email protected]>  wrote:
>> 2012/2/24 lkcl luke<[email protected]>:
>>>   when you remember who you were, could you kindly take a look at this?
>> I think that was Pascal?
> ahh.  thanks.
>
> ok - the problem is this: in pyjs, History notification is done via a
> hidden iframe, with a timer loop running every 250ms.  the recursive
> loop however is *still* there.
>
> thus, once a tab is clicked on, what will happen is that a history
> token will be stored in the iframe, the timer loop will pick it up,
> change the history, which will cause onHistoryChanged to be called,
> which will call setTab, which will cause the onTabChange notify to be
> called, which will set a history token to be stored in the hidden
> iframe, where the timer loop will pick it up, change the history,
> which will cause onHistoryChanged to be called, which will call
> setTab....
>
> ... and on, and on, and on.
>
> so it won't cause infinite recursion, but it _will_ increase CPU
> usage... permanently.  and if there's any bugs in memory handling in
> the browser's implementation, eventually the browser will run out of
> memory.
>
> in the case of pyjd, there's no such hidden iframe: the setting of the
> history token is called directly, and that's how you end up with the
> infinite recursion.
>
> so - someone needs to stop this from happening!  reading the history
> token and not calling the history change if it's not needed would do
> the trick.
>
> l.
I'll look at it asap.

++
pascal

Reply via email to