Меню

Delphi ошибка stack overflow

When i open Delphi XE get this message and i must close IDE.

message :

Danger: stack overflow — save your work and restart Delphi XE

I uninstall Delphi and cpp XE and reinstall them, but already get this message.

Why?

Alexander's user avatar

Alexander

23.3k11 gold badges61 silver badges73 bronze badges

asked Oct 31, 2010 at 16:54

User's user avatar

3

This sounds like an error somewhere in a package.

What 3rd party components or own packages did you recently install?

When you re-install Delphi under a new user, you get a fresh new set of Delphi registry keys, and the default package load list and order.

When you re-install Delphi under an existing user, you keep the existing registry keys, and therefore the package load list and order that fails.

Compare these lists, then disable (package by package) the ones not in the new user until Delphi loads fine.

Then start adding packages (skipping the one that failed) to see if there might be more than one package causing a failure.

The root registry key where Delphi XE keeps the settings is this one:

HKEY_CURRENT_USERSoftwareEmbarcaderoBDS8.0

The same trick works for other Delphi versions.

Rodrigo Ruz made a list of these keys for up to Delphi XE.
Modelmaker Tools made a more complete list that includes Delphi XE3 as well.

Community's user avatar

answered Oct 31, 2010 at 17:26

Jeroen Wiert Pluimers's user avatar

0

Sounds like an issue for Embarcadero, contact their support/QA with your license number.

answered Oct 31, 2010 at 16:57

Gregor Brandt's user avatar

stack overflow error when i open Delphi XE IDE :

This type of errors raises because of the third party component installation, you just do the following things,

  1. uninstall thirparty component (if exists)
  2. reset the internet explorer settings (because of that only you will get stack overflow error while opening welcome page in delphi IDE)
  3. now restart your Delphi IDE

for further details visit http://nanosofttechno.blogspot.in/2013/08/stack-overflow-save-your-work-and.html

answered Aug 26, 2013 at 8:19

Karthik Thirumoorthi's user avatar

The same problem has appeared in my machine at the same time in D2007, D2009, D2010 and DXE.

It seems to be something similar to this report at embarcadero:
http://qc.embarcadero.com/wc/qcmain.aspx?d=80222

If I rename the ‘Welcomepage’ as suggested in the link above, the IDEs open (with a blanc page and a message).
Here, I can create a new simple project but the IDE takes the 100% CPU when I try to write some code and I have to kill it through Task Manager.
This happens in the mentioned IDEs once renamed the ‘Welcomepage’ and also happens in D2005 and D2006, where I don’t get the ‘stack overflow’ error at the IDE startup.

Deleting the registry keys suggested in the article above seems to do nothing for me.
The error happened before and after installing Update 1 for XE.
I’ve tried uninstalling and reinstalling XE to eliminate 3rd party packages possible problems.
I’ve tried cleaning all the browsers cache as suggested too.

Recent changes: Some drivers for a Sony Ericson mobile, some Windows XP updates. Not much more.

answered Nov 16, 2010 at 10:42

Yeray's user avatar

YerayYeray

4,9991 gold badge13 silver badges25 bronze badges

1

I don’t know why i revived this error message.
but i make a new user-account in windows and run Delphi XE from it, don’t receive any err.

Alexander's user avatar

Alexander

23.3k11 gold badges61 silver badges73 bronze badges

answered Dec 10, 2010 at 6:17

User's user avatar

UserUser

9315 gold badges16 silver badges24 bronze badges

2

Having the same problem with D2010/WinXP, the solution that helped was:

Open IE explorer (or Maxthon in my case), open Settings panel, select Clear history and delete all items (browser history, address line history,cache,….)

It looks like start of newer Delphi version depends on successfull opening of the IE explorer engine with Welcome page and if it fails from some reason, Delphi freezes.

answered Oct 26, 2016 at 6:14

Jaromir Junek's user avatar

jaguarchuk

0 / 0 / 0

Регистрация: 25.03.2012

Сообщений: 20

1

19.06.2012, 23:03. Показов 7757. Ответов 5

Метки нет (Все метки)


Ну ни как не хочет работать

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function p: string;
var
plist: TStringList;
c: integer;
ss: string;
begin
p := '';
plist := TStringList.Create;
plist.LoadFromFile('configp.txt');
 for c := 0 to plist.Count -1 do begin                 \выделяет и все
ss := plist.Strings[c];
p := p+ss+'ololo';
end;
if Form1.CheckBox5.Checked = false then
p := '';
end;
...
S.send(p);

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

19.06.2012, 23:03

Ответы с готовыми решениями:

Ошибка stack overflow
Вылетает ошибка "stack overflow", менял Max stack size с $00100000 на %00999999, не помогло.
Что…

Stack is overflow в игре
Доброго времени суток, уважаемые эксперты. Я занялся созданием программы, но в ходе ее работы у…

ошибка Overflow Stack
Доброго времени суток!
Дело в том что у меня в B. Delphi 7 проект перед этим работал. А теперь…

Stack overflow в чате
Здравствуйте, делаю чат(клиент-сервер) в Delphi 7 на сокетах. После каких то(ошибку обнаружил не…

5

421 / 351 / 19

Регистрация: 14.05.2012

Сообщений: 1,437

19.06.2012, 23:23

2

Что именно не работает?Выдает ошибку, или еще что?…



0



0 / 0 / 0

Регистрация: 25.03.2012

Сообщений: 20

19.06.2012, 23:34

 [ТС]

3

Цитата
Сообщение от Санек25
Посмотреть сообщение

Что именно не работает?Выдает ошибку, или еще что?…

ошибка же stack overflow



0



421 / 351 / 19

Регистрация: 14.05.2012

Сообщений: 1,437

19.06.2012, 23:41

4

ошибка Overflow Stack смотри здесь

Добавлено через 36 секунд
может быть ты бесконечно раз вызываешь функцию?..



0



429 / 337 / 36

Регистрация: 31.05.2011

Сообщений: 1,156

19.06.2012, 23:41

5

Ошибка видимо в другом месте кода



0



Одиночка

3942 / 1867 / 337

Регистрация: 16.03.2012

Сообщений: 3,880

20.06.2012, 07:53

6

Скорее всего в строке 12 выложенного кода компилятор интерпретирует p как функцию и происходит рекурсивное обращение к самой себе. Пиши так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function p: string;
var
plist: TStringList;
c: integer;
ss: string;
begin
  Result := '';
  if Not Form1.CheckBox5.Checked then Exit;
 
  plist := TStringList.Create;
  plist.LoadFromFile('configp.txt');
  for c := 0 to plist.Count -1 do 
  begin
    ss := plist.Strings[c];
    Result := Result+ss+'ololo';
  end;
end;
...
S.send(p);



3



 
scout
 
(2003-05-03 20:31)
[0]

Ну беда!!! При запуске проекта вылетает сообщение:

Project lala.exe raised exception class EStackOverflow with message «Stack Overflow». Process stopped.

Что это такое и как с этим бороться?


 
Anatoly Podgoretsky
 
(2003-05-03 20:49)
[1]

Бережнее относиться к стеку, не бездонный.


 
default
 
(2003-05-03 21:36)
[2]

Anatoly Podgoretsky © (03.05.03 20:49)

Юмор однако!

И дно у стека есть хе


 
Aldor
 
(2003-05-03 22:04)
[3]

Означает переполнение стека. Надо смотреть код. Стек заполняется, например, при объявлении локальных переменных и вызовах процедур. Наиболее частая причина переполнения стека — слишком глубокая рекурсия, возможно без условия выхода.

Иногда ошибку можно найти, используя отладочное окно Call Stack

(View -> Debug Windows -> Call Stack). Удачи!


 
scout
 
(2003-05-04 21:45)
[4]

> Наиболее частая причина переполнения стека — слишком глубокая рекурсия, возможно без условия выхода.

Ну ты и загнул попроще нельзя.


 
Arch-vile
 
(2003-05-04 23:19)
[5]

>
> Наиболее частая причина переполнения стека — слишком глубокая >рекурсия, возможно без условия выхода.

>Ну ты и загнул попроще нельзя.


рекурсия — обратный вызов процедуры, т.е. когда она сама себя вызывает. Например

procedure xxx(i:integer);

begin

xxx(i);

end;


вот тебе и обратный вызов, рекурсия. может быть через 2-3 функции-процедуры:

procedure xxx(i:integer);

begin

yyy(i);

end;

procedure yyy(i:integer);

begin

xxx(i);

end;



 
Arch-vile
 
(2003-05-04 23:21)
[6]

ну типа того, может быть сложнее, и не обязательно
i в качестве переменной 😉


 
k-man
 
(2003-05-05 18:35)
[7]

К вопросу понимания стека…

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

Насколько я знаю 1)стек не бездонный.

2)в него при вызове процедур ложатся все (
не только они но все же по-моему они здесь стек и забивают)
К вопросу понимания стека…

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

Насколько я знаю 1)стек не бездонный.

2)в него при вызове процедур ложатся все передаваемые аргументы(не только они но все же по-моему они здесь стек и забивают).

Может быть поэтому при глубокой рекурсии стек переполняется.

Так как эти параметров, точек возврата и т.д. становится слишком много..

Хотя это лишь предположение…. Вполне возможно ошибочное..


 
Aldor
 
(2003-05-05 20:16)
[8]

2k-man

Все правильно, в стеке резервируется место для аргументов функции, возвращаемого значения функции, всех локальных переменных функции, и так же еще место для указателя, имеющего «внутреннее» предназначение. Таким образом можно примерно подсчитать, сколько места в стеке займет рекурсия заданной глубины.


 
k-man
 
(2003-05-05 22:00)
[9]

А вот что интересно: От чего зависит размер стека?

И можно ли его как-то контролировать? Лично я сомневаюсь…


 
Palladin
 
(2003-05-06 14:17)
[10]



> k-man © (05.05.03 22:00)



от установки

{$M}


 
Alek Aaz
 
(2003-05-07 03:54)
[11]

ИМХО. Если в алгоритме есть логическая ошибка {$M} не поможет. Программа засрет все что можно.


 
Palladin
 
(2003-05-07 08:47)
[12]

естественно


 
Aldor
 
(2003-05-07 09:36)
[13]

Как? У ваc еще нет нового процессора Intel Pentium V, выполняющего бесконечный цикл за 6 секунд? :)))


 
k-man
 
(2003-05-07 12:38)
[14]



> Как? У ваc еще нет нового процессора Intel Pentium V, выполняющего

> бесконечный цикл за 6 секунд? :)))



Слышал что это из рекламы суперкомпа Cray.


 
Aldor
 
(2003-05-07 21:51)
[15]

2k-man

Не важно, это просто шутка 🙂


 
Aldor
 
(2003-05-07 21:51)
[16]

2k-man

Неважно, это просто шутка 🙂


 
k-man
 
(2003-05-07 22:34)
[17]

Неплохая шутка-)


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

Введите описание изображения здесь

Запуск exe приводит к закрытию приложения. Иногда я получаю сообщение «Нарушение прав доступа».

Итак, что мне делать, чтобы избавиться от этой ошибки в моем приложении?

РЕДАКТИРОВАТЬ

..

В основной форме есть таймер, который обновляет все элементы управления timer_RefreshCOntrol (intervali 1).

когда editBox_one изменяется (значение), эта функция вызывается

Procedure TStringSetting.SetValue (const AValue : String);
  Begin
   ...
    If FValueControl <> Nil then
    Begin
     FValueControl.OnChange := VoidNotifyEvent;
     FValueControl.Text := NewValue;
     FValueControl.OnChange := EditChange;        //<--here the stackoverflow error comes....
    end;
  end;




 Procedure EditChange (Sender: TObject);
   Begin
       Value := FValueControl.Text;
       If Not EditIsValid then FValueControl.Font.Color := clRed
       else If Dirty  then FValueControl.Font.Color := clBlue
                  else FValueControl.Font.Color := clWindowText;

       If @OldCustomEditChange <> Nil then OldCustomEditChange(Sender);
    end;`


   the EditChange (Sender: TObject); <--keeps geting called and the stackoverflow error comes

EditChange назначается в поле редактирования на FormCreate

EDIT2

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

редактировать 3
Значение стека вызовов, но что такое «???»
Введите описание изображения здесь

EDIT 4

после прохождения @Cosmin Prund и @david

Я получил место, где начинается бесконечный зов

   Procedure TFloatSetting.EditChange (Sender: TObject);
  Begin
    SkipNextOnChange := True;
  Inherited EditChange(Sender);
  IfValidThenStore(FValueControl.Text);
  Inherited EditChange(Sender);  {<-------This is where it start}
 end;


 Procedure TStringSetting.EditChange (Sender: TObject);
  Begin
   Value := FValueControl.Text;
   If Not EditIsValid then FValueControl.Font.Color := clRed
     else If Dirty  then FValueControl.Font.Color := clBlue
                  else FValueControl.Font.Color := clWindowText;

   If @OldCustomEditChange <> Nil then OldCustomEditChange(Sender); {<---this keeps calling  Procedure TFloatSetting.EditChange (Sender: TObject);}
 end;

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Delphi ошибка 1400 недопустимый дескриптор окна
  • Delphi как убрать сообщение об ошибке