Получение ошибки № 1502, когда этого не должно было произойти

Я начал получать много ошибок #1502 в своей игре. ("скрипт выполнялся слишком долго") Разные версии прошивальщика, разные пользователи, случайные места в игре. Я не могу воспроизвести его сам.

Я собираю игровые журналы на случай неотловленных ошибок, и согласно им пользователи взаимодействовали с игрой всего за несколько секунд до возникновения этой ошибки. Вот что меня беспокоит, поэтому я и задаю этот вопрос. Это не может быть правильным. Насколько я понимаю, в случае этой ошибки они не должны иметь возможности взаимодействовать с ней в течение как минимум 15 секунд.

И это не один случай. Во всех этих новых ошибках (сотни в день) регистрируется как минимум одно действие пользователя за 1–10 секунд до ошибки.

Сначала я подумал, что метка времени неверна. Я использую getTimer(), чтобы получить его. Я вставил в игру цикл while (true), чтобы проверить это и убедиться, что отметка времени верна и происходит через 15 секунд после действия, которое запустило цикл, вызвавший ошибку #1502.

Эта ошибка может быть связана с TweenLite, поскольку все трассировки стека выглядят так:

Error: Error #1502
    at com.greensock.core::SimpleTimeline/renderTime()
    at com.greensock::TweenLite$/updateAll()

Версия TweenLite, которую я использую, не самая последняя, ​​но я использовал ее в этой игре 1,5 года, и раньше проблем не было. К сожалению, я не могу обновиться до самой последней версии, так как она не имеет обратной совместимости и потребует значительных изменений.

UPD. Для ясности, вопрос "Как я могу получить ошибку #1502, если пользователь смог взаимодействовать с игрой всего за несколько секунд до нее?"


person aesca    schedule 05.03.2015    source источник
comment
Вы должны предоставить минимальный пример. Без примера трудно сказать, почему возникает эта ошибка.   -  person subdan    schedule 05.03.2015
comment
К сожалению, я не могу воспроизвести эту ошибку. Я предоставил полученную трассировку стека.   -  person aesca    schedule 05.03.2015
comment
У вас есть бесконечный цикл или что-то в этом роде, но мы не можем вам помочь без кода.   -  person akmozo    schedule 05.03.2015
comment
Если бы у меня был бесконечный цикл, как пользователь мог бы запустить действие в его середине? Потому что он сделал. По крайней мере, по логу, который я проверял на корректность в случае бесконечных циклов и он оказался верным.   -  person aesca    schedule 05.03.2015
comment
Я не могу ответить вам, не зная, что делает ваш цикл и ваш пользователь !! Есть много вещей, которые могут сделать бесконечный цикл !!   -  person akmozo    schedule 05.03.2015
comment
Но в этом проблема. Это происходит в разных частях игры, это не привязано к конкретному экрану или меню, трассировка стека бесполезна. Единственная подсказка, которая у меня есть, заключается в том, что пользователи смогли успешно щелкнуть что-то всего за несколько секунд до ошибки. А этого быть не должно в случае ошибки #1502.   -  person aesca    schedule 05.03.2015
comment
Во-первых, TweenLite не является причиной проблемы, это всего лишь ее конец. Если бы это был я, мне было бы действительно все равно, взаимодействует ли пользователь за 10 секунд до истечения времени ожидания приложения, я бы сосредоточился на устранении проблемы.   -  person BotMaster    schedule 05.03.2015


Ответы (2)


Вам нужно провести рефакторинг кода. Это должно помочь и дать некоторые пояснения:

http://www.senocular.com/flash/tutorials/asyncoperations/

person Florian Lavorel    schedule 05.03.2015

Это оказалось ошибкой JavaScript. За 1 минуту до возникновения ошибки есть вызов ExternalInterface функции JS, который дал сбой. Через 1 минуту выдает эту ошибку ни с того ни с сего. У меня не включена сортировка ошибок JS, но эта ошибка все равно прошла. Стек является случайным и не имеет ничего общего с фактической ошибкой.

person aesca    schedule 04.05.2017