Maximum call stack size exceeded как исправить iphone

Question: Q: Maximum Call Stack Size Exceeded

I have this error when I try to play online games on Safari or Chrome. Does someone know how to repair it using a PC because I don’t have a Mac?

iPhone XR, iOS 14

Posted on May 29, 2021 10:48 AM

Helpful answers

Hey there Becky_7,

Thanks for reaching out to Apple Support Communities. We understand that you’re seeing an error message when playing a game through Safari or Chrome. We’re happy to provide some assistance.

Does this issue only occur with this specific game or specific website? If so, we recommend contacting the developer of the game or web host for assistance.

If this issue occurs with multiple sites, try updating your device and clearing Safari history/cookies:

We hope this helps.

Have a great day!

May 30, 2021 12:36 PM

There’s more to the conversation

Loading page content

Page content loaded

Hey there Becky_7,

Thanks for reaching out to Apple Support Communities. We understand that you’re seeing an error message when playing a game through Safari or Chrome. We’re happy to provide some assistance.

Does this issue only occur with this specific game or specific website? If so, we recommend contacting the developer of the game or web host for assistance.

If this issue occurs with multiple sites, try updating your device and clearing Safari history/cookies:

We hope this helps.

Have a great day!

May 30, 2021 12:36 PM

I tried this advice but it didn’t work it tells me to see my JavaScript console but I don’t know how to access it using a PC or my phone.

May 30, 2021 12:46 PM

Thank you for the reply Becky_7!

You have taken some excellent steps already. This may seem like a simple step, but have you restarted your device? Restarting your device can potentially resolve unexpected issues:

Also, does this only occur with this specific game or website? If so, we recommend contacting the developer of the game or web host for assistance. It is possible that there is a compatibility issue.

May 31, 2021 9:57 AM

I restarted my phone but the problem still occurs 🙁

The problem also occurs on different websites.

Thanks for your advice

May 31, 2021 1:01 PM

Apple reduced the maximum stack size on iPad for IPhone from around 1,000 to less than 100 I believe and lots of applications simply do not work.

Jun 23, 2021 1:39 PM

Why would they do that?

Jun 24, 2021 8:53 AM

Please fix the Java script issue with the latest update it worked fine before the update ps using iPhone pro12 max if that helps

Jul 25, 2021 7:35 PM

This is happening specifically on browser games run by Ren’Py.

Aug 26, 2021 1:55 PM

Any further information regarding this problem on iOS devices?

Some more background on this problem:

This error message appears when attempting to load Ren’Py games on any browser (safari, chrom… etc) after the lunch of safari update (IOS/iPadOS 14.5.1):

Error: RangeError: Maximum call stack size exceeded. (See Javascript console for details).

*This problem did not occur before the lunch of safari update (IOS/iPadOS 14.5.1).

You recommended to contact the developers, and users have reached Ren’Py developers that have researched this error on their part and responded that the problem is with Apple and not with them.

As francoischesnay commented in this thread: “Apple reduced the maximum stack size on iPad for IPhone from around 1,000 to less than 100 I believe and lots of applications simply do not work.”

is there any truth in this statement? And if so, when does Apple going to address this issue?

Even if the statement above is incorrect, when is Apple going to research and fix this issue? We hoped that with IOS/iPadOS 15 this issue would have been resolved but that did not happen.

There are a lot of Apple users that are waiting for a replay other then clear your browser cache/history/cookies or restart/upgrade your device as non of them fixes this issue.

Читайте также:  Как отформатировать часы apple iwatch

Looking forward for your or Apple support replay

Источник

Ошибка превышения максимального размера стека вызовов

Я использую файл библиотеки JavaScript Direct Web Remoting (DWR) и получаю сообщение об ошибке только в Safari (настольный компьютер и iPad).

Превышен максимальный размер стека вызовов.

Что именно означает эта ошибка и полностью ли прекращается обработка?

Также любое исправление для браузера (на самом деле на написано

JS: время выполнения превысило время ожидания

который, как я предполагаю, является той же проблемой стека вызовов)

  • 2 я получил эту ошибку при попытке отправить переменные (без их объявления) через в ajax. Исправлена ​​ошибка путем объявления переменных.

1 2 Далее

Это означает, что где-то в вашем коде вы вызываете функцию, которая, в свою очередь, вызывает другую функцию и так далее, пока вы не достигнете предела стека вызовов.

Это почти всегда из-за рекурсивной функции с невыполненным базовым случаем.

Просмотр стека

Рассмотрим этот код .

Вот стек после нескольких вызовов .

Как видите, стек вызовов увеличивается до тех пор, пока не достигнет предела: размер стека, жестко заданный браузером, или исчерпание памяти.

Чтобы исправить это, убедитесь, что ваша рекурсивная функция имеет базовый случай, который может быть выполнен .

  • 6 Спасибо за это . Так есть ли способ / инструмент, с помощью которого я могу исчерпать лимит стека . Опять же, поскольку это огромный файл библиотеки, созданный не мной, я не совсем понимаю, что где что-то может пойти не так .
  • 57 @Oliver Если вам нужно запустить функцию почти 300 триллионов раз, вы, наверное, делаете что-то не так.
  • 3 @Oliver — возможно, вы захотите изучить динамическое программирование — я предполагаю, что у вас не так много уникальных решений, вы повторяете шаги, поэтому вам может потребоваться запрограммировать его на полиномиальное время, а не на квадратичное. en.wikipedia.org/wiki/Dynamic_programming
  • 4 @Akhoy В обычной функции да, но подумайте о рекурсивной функции. Он вызывает другой (сам) и оставляет адрес возврата первого в стеке (иначе где ПК знал бы, куда идти?) Это, конечно, снова вызывает себя, каждый раз помещая адрес возврата в стек. Когда это исчезает из-за базового случая, который вряд ли будет реализован в следующем столетии, вы получите переполнение стека.
  • 5 Ваш код запускает один и тот же неэффективный сегмент 134217728 раз. Без шуток, это медленно. Вы должны использовать побитовые операторы, чтобы вы могли развернуть 9 уровней циклов в один уровень циклов.

Иногда вы можете получить это, если случайно импортируете / вставляете один и тот же файл JavaScript дважды, что стоит проверить на вкладке ресурсов в инспекторе.

  • 9 Эта проблема обычно возникает, когда вы случайно дважды импортируете / встраиваете один и тот же файл JS. Я не собираюсь рассуждать о точном процессе, вызывающем рекурсивный цикл, однако я бы предположил, что это что-то вроде вождения двух одинаковых автомобилей со скоростью 100 миль в час через один и тот же платный шлюз.
  • 3 Я не думаю, что это так. Если встроены две одинаковые функции или переменные, последние переопределят предыдущие определения.
  • Да . Я действительно не знаю, почему это происходит или каков процесс, я бы хотел, чтобы это тоже переопределило.
  • Немного поздно для вечеринки, но можно представить, что когда код находится вне какой-либо функции, оба будут выполняться в двух файлах JS, и один, вероятно, не будет перезаписывать друг друга, поскольку они находятся вне какой-либо функции.
  • 1 @lucygenik в следующий раз, когда вы захотите быть более осторожными при утверждении троллей правок в ваших сообщениях. Этот пост почти удален как спам (проверьте историю)

В моем случае я отправлял элементы ввода вместо их значений:

Это заморозило мою вкладку Chrome до такой степени, что она даже не показала мне диалоговое окно «Ждать / убить», когда страница перестала отвечать .

  • 3 Интересно, почему для такой ошибки нет исключения… Спасибо!
  • Большое спасибо, это спасло меня
  • Я собирался добавить это как возможное решение. Я только что сделал именно это, лол

Где-то в вашем коде есть рекурсивный цикл (т.е. функция, которая в конечном итоге вызывает себя снова и снова, пока стек не заполнится).

В других браузерах либо стеки побольше (так что вместо этого вы получаете тайм-аут), либо они по какой-то причине проглатывают ошибку (возможно, неудачно размещенный try-catch).

Читайте также:  Взлом для apple tv

Используйте отладчик для проверки стека вызовов при возникновении ошибки.

  • Спасибо за ваш ответ. В IE / FF код работает нормально .. Только в Safari для настольных компьютеров и в iPad Safari я получаю сообщение об ошибке. На самом деле файл JS — не мое собственное творение, а файл библиотеки (из DWR engine.js). Directwebremoting.org Также, когда вы говорите «отладчик для проверки стека вызовов», как мне это сделать с помощью Safari Inspector?
  • У меня нет опыта работы с Safari Inspector. Попробуйте открыть отладчик JavaScript и загрузить свою страницу. Отладчик должен останавливаться при возникновении невыявленной ошибки. Если это не сработает, спросите суперпользователя или веб-мастера (см. Внизу страницы)
  • имел 2 функции, названные одинаково !! ДОХ!

Проблема с обнаружением переполнения стека иногда заключается в том, что трассировка стека откручивается, и вы не сможете увидеть, что на самом деле происходит.

Я нашел для этого полезными некоторые из новых инструментов отладки Chrome.

Нажмите , убедитесь, что включены, и вы получите что-то вроде этого.

Совершенно очевидно, где здесь переполнение! Если вы нажмете , вы действительно сможете увидеть точный номер строки в коде.

Вы также можете увидеть расписание, которое может быть полезным или отвлекающим маневром.

Еще один полезный трюк, если вы не можете найти проблему, — поместить множество операторов там, где, по вашему мнению, проблема. Предыдущий шаг выше может помочь вам в этом.

В Chrome, если вы несколько раз выводите идентичные данные, он будет отображать это так, показывая, где проблема более четко. В этом случае стек попал в 7152 кадра, прежде чем он окончательно разбился:

В моем случае я преобразовывал большой массив байтов в строку, используя следующее:

содержит несколько миллионов записей, что слишком велико для размещения в стеке.

  • У меня тоже была такая же проблема с той же строкой !! спасибо
  • так какое же лучшее решение для преобразования большого массива байтов ??
  • 7 @KarthikHande Вы должны делать это в цикле for, а не за один вызов.
  • как мне преобразовать это в JSON? Я пробовал JSON.parse, но он не работал . Я использую Uintl8Array
  • @KarthikHande Я не могу сказать, не видя всей проблемы. Пожалуйста, откройте еще один вопрос со всеми подробностями.

В моем случае событие click распространялось на дочерний элемент. Итак, мне пришлось поставить следующее:

при событии клика:

Проверьте сведения об ошибке в консоли панели инструментов Chrome dev, это даст вам функции в стеке вызовов и направит вас к рекурсии, вызывающей ошибку.

Если вам по какой-то причине нужен бесконечный процесс / рекурсия, вы можете использовать веб-воркер в отдельном потоке. http://www.html5rocks.com/en/tutorials/workers/basics/

если вы хотите манипулировать элементами dom и перерисовывать, используйте анимацию http://creativejs.com/resources/requestanimationframe/

Почти в каждом ответе здесь говорится, что это может быть вызвано только бесконечным циклом. Это неправда, иначе вы могли бы перегрузить стек из-за глубоко вложенных вызовов (чтобы не сказать, что это эффективно, но это определенно в пределах возможного). Если у вас есть контроль над виртуальной машиной JavaScript, вы можете настроить размер стека. Например:

См. Также: Как увеличить максимальный размер стека вызовов в Node.js

В моем случае два модальных окна jQuery отображались наложенными друг на друга. Предотвращение этого решило мою проблему.

Недавно мы добавили поле на сайт администратора, над которым мы работаем — contact_type . легко, правда? Что ж, если вы вызываете select «type» и пытаетесь отправить это через вызов jquery ajax, он терпит неудачу с этой ошибкой, скрытой глубоко в jquery.js. Не делайте этого:

Проблема в том, что type: type — я считаю, что мы называем аргумент «тип» — наличие переменной значения с именем type не является проблемой. Мы изменили это на:

И соответственно переписал some_function.php — проблема решена.

Проверьте, есть ли у вас функция, которая вызывает сама себя. Например

Это также может вызвать ошибку :

Из документов Mozilla:

Но будьте осторожны: при использовании apply таким образом вы рискуете превысить ограничение длины аргумента движка JavaScript. Последствия применения функции со слишком большим количеством аргументов (думаю, более десятков тысяч аргументов) различаются в зависимости от движка (JavaScriptCore имеет жестко запрограммированный предел аргументов 65536), потому что этот предел (действительно, даже природа любого чрезмерно большого стека) поведение) не указано. Некоторые движки выдают исключение. Более пагубно то, что другие будут произвольно ограничивать количество аргументов, фактически передаваемых прикладной функции. Чтобы проиллюстрировать этот последний случай: если бы такой движок имел ограничение в четыре аргумента (фактические ограничения, конечно, значительно выше), это было бы так, как если бы аргументы 5, 6, 2, 3 были переданы для применения в примерах выше, а не весь массив.

Так что попробуйте:

Читайте также:  Лучшие внешние аккумуляторы для iphone рейтинг

Для меня, как новичка в TypeScript, проблема заключалась в геттере и сеттере _var1.

Оба вызова идентичного кода ниже, если они уменьшены на 1, работают в Chrome 32 на моем компьютере, например. 17905 против 17904. Если запустить как есть, они выдадут ошибку «RangeError: Превышен максимальный размер стека вызовов». Похоже, что это ограничение не жестко запрограммировано, а зависит от оборудования вашего компьютера. Похоже, что при вызове как функции этот добровольный лимит выше, чем при вызове как метода, т.е. этот конкретный код использует меньше памяти при вызове как функции.

Вызывается как метод:

Вызывается как функция:

вы можете найти свою рекурсивную функцию в браузере crome, нажмите ctrl + shift + j, а затем вкладку источника, которая дает вам поток компиляции кода, и вы можете найти, используя точку останова в коде.

  • Однако иногда бывает трудно понять, где возникла ошибка. У нас на сайте ОЧЕНЬ много JavaScript.

Я также столкнулся с аналогичной проблемой, вот подробности при загрузке логотипа с помощью раскрывающегося окна загрузки логотипа.

до исправления мой код был:

Ошибка в консоли:

Я решил это, удалив из тега div.

Я столкнулся с той же проблемой, которую я решил, удалив имя поля, которое дважды использовалось в ajax, например

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

Предположим, у вас есть такие вложенные элементы:

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

Итак, этот код не сработает:

У вас есть два способа избежать этого:

  • Переместите ребенка за пределы родителя.
  • Примените функцию stopPropagation к дочернему элементу.

У меня была эта ошибка, потому что у меня было две функции JS с одинаковым именем

Если вы работаете с картами Google, проверьте, передаются ли широта и долгота в в правильном формате. В моем случае они считались неопределенными.

Проблема в моем случае заключается в том, что у меня есть дочерний маршрут с тем же путем, что и родительский:

Поэтому мне пришлось удалить линию детского маршрута

в моем случае я получаю эту ошибку при вызове ajax, и данные, которые я пытался передать, эта переменная не определены, это показывает мне эту ошибку, но не описывает эту переменную, которая не определена. Я добавил, что определил, что переменная n имеет значение.

  • я сгорел аналогичным образом, в моем случае это было из-за того, что я опечатал имя переменной . фактически то же самое.

Столкнулись с той же проблемой, не смогли понять, в чем дело, начали обвинять Бабеля;)

Код, не возвращающий никаких исключений в браузерах:

проблема была создана неправильно || (или) часть, поскольку babel создает свою собственную проверку типа:

так что удаление

сделал вавилонную транспиляцию.

В моем случае я по ошибке назначил то же имя переменной и функции val «class_routine_id»

должно быть вроде:

в Angular, если вы используете mat-select и имеете более 400 вариантов, эта ошибка может возникнуть https://github.com/angular/components/issues/12504

вам нужно обновить версию @ angular / material

Я использую React-Native 0.61.5 вместе с (npm 6.9.0 и узел 10.16.1)

Пока я устанавливаю новые библиотеки в Project, я получил

(например, npm install @ response-navigation / native —save)

Ошибка превышения максимального размера стека вызовов

для этого я стараюсь

sudo npm cache clean —force

(Примечание: — Команда ниже обычно занять время от 1 до 2 минут в зависимости от вашего npm кеш размер)

В моем случае я в основном забываю получить из .

Неправильно

Верный

  • Это похоже на @FKasa, это в javascript

Иногда происходило из-за типа данных convert, например, у вас есть объект, который вы считали строкой.

Источник

Оцените статью