Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 1511 1512 1513 1514 1515 [1516] 1517 1518 1519 1520 .. 1533   вперед  Ctrl
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
Вопрос, наверное, правильно сформулировать так: регистр стека вообще можно испортить?
30 июл 19, 12:26    [21937754]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3832
Соколинский Борис
но их там, с пакетами и плагинами чуть больше чем дофига

Смотреть именно на наличие внедрённых (хуки, appinit и пр.).
30 июл 19, 12:27    [21937757]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30502

собери проект с ЭурэкаЛог.
он тебе покажет.

Posted via ActualForum NNTP Server 1.5

30 июл 19, 12:28    [21937760]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58941
Блог
Соколинский Борис
Вопрос в следующем: может ли это быть вторичной ошибкой, например вследствие порчи где-то памяти

Да не должно, по идее. Стек - это ведь по сути значение в регистре ESP, исключение stack overflow подразумевает, что оно дошло до нуля. Чтобы оно было вторичной ошибкой... это, получается, какая-то подпрограмма должна испортить "возвратное" значение ESP в стеке, после чего выйти...
30 июл 19, 12:32    [21937764]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58941
Блог
Соколинский Борис
Вопрос, наверное, правильно сформулировать так: регистр стека вообще можно испортить?

Специально - нет проблем. А вот случайно - достаточно тяжело. По крайней мере если верить, что компилятор генерит корректный код, а программист не злоупотребляет ассемблерными вставками с командой PUSH внутри.
30 июл 19, 12:35    [21937767]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
softwarer
По крайней мере если верить, что компилятор генерит корректный код, а программист не злоупотребляет ассемблерными вставками с командой PUSH внутри.
Программист не злоупотребляет, использует только там, где это критически необходимо.
В данном случае ассемблерный код есть, но он отрабатывает в другом потоке. По идее, это же не может быть причиной?
30 июл 19, 12:57    [21937795]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
Мимопроходящий
собери проект с ЭурэкаЛог.
он тебе покажет.
Поставил, скомпилировал, запустил. Отработало без ошибок, папка BugReport\xxx.dl lпоявилась, в ней ничего нет. Так и должно быть или я что-то забыл настроить?
30 июл 19, 14:17    [21937883]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30502

ты не у себя запускай.
у тебя ж не падает.

Posted via ActualForum NNTP Server 1.5

30 июл 19, 15:39    [21937976]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
Мимопроходящий, это понятно.
Но, прежде чем напрягать занятых венгерских лаборантов, нужно убедиться, что это работает. Просто эмулировать ошибку бесконечной рекурсией будет достаточно?
30 июл 19, 15:48    [21937986]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25955
Соколинский Борис
Просто эмулировать ошибку бесконечной рекурсией будет достаточно?

Дерни какой-будь метод объекта nil.
30 июл 19, 15:55    [21937993]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
wadman,
С nil понятно, но меня именно стек интересует.

Выставляю Max stack size на минимум, запускаю такую функцию
Function CheckRecursion: integer;
begin
  Result:=random(1000)-500+CheckRecursion;
end;

она предсказуемо и сразу возвращает Stack overflow.
Подключаю эврику - программа намертво зависает. Можно предположить, что там лог пишется, но файл не создается, активность приложения нулевая.
30 июл 19, 16:32    [21938032]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
А на рабочей библиотеке, как ни странно, сработало.
Таки бесконечная рекурсия (ума не приложу, как такое могло возникнуть).
Спасибо за наводку.
31 июл 19, 13:43    [21938881]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
alekcvp
Member

Откуда:
Сообщений: 1553
Наткнулся тут на старый спор про пример из школьного учебника и внезапно обнаружил что уже начал забывать алгебру О_о

Вопрос: равнозначны ли записи 8 / 2x и 8 / 2 * x ?
Т.е. если, например, x = 4, то в первом случае будет 1 или всё-таки 16?..
1 авг 19, 16:41    [21940055]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
ёёёёё
Member

Откуда:
Сообщений: 1004
alekcvp
Наткнулся тут на старый спор про пример из школьного учебника и внезапно обнаружил что уже начал забывать алгебру О_о

Вопрос: равнозначны ли записи 8 / 2x и 8 / 2 * x ?
Т.е. если, например, x = 4, то в первом случае будет 1 или всё-таки 16?..




vs



:)
1 авг 19, 16:51    [21940066]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
ёёёёё
Member

Откуда:
Сообщений: 1004
alekcvp
...
Вопрос: равнозначны ли записи 8 / 2x и 8 / 2 * x ?
...

Да.

alekcvp
...
Т.е. если, например, x = 4, то в первом случае будет 1 или всё-таки 16?..

16 в обоих случаях.
1 авг 19, 16:52    [21940067]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58941
Блог
alekcvp
Наткнулся тут на старый спор про пример из школьного учебника и внезапно обнаружил что уже начал забывать алгебру

Это не алгебра. Это почти правописание :)

alekcvp
Вопрос: равнозначны ли записи 8 / 2x и 8 / 2 * x ?

Да. Но нормальные люди, дабы не смущать умы, пишут либо как (8/2)x, либо как 8/(2x).
1 авг 19, 16:53    [21940068]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1002
Вроде бывали тут такие вопросы, может есть известный ответ. Почему могут быть неактивны точки останова, брекпойнты? Build - Debug, в опциях проекта Use Debug DCUs стоит галочка, в разделе опций Debugging тоже галки. Где ни ставлю брекпойнт, во время выполнения стновится неактивной. Еще, увидел, наверное по-умолчанию так в debug билде, оптимизация отключена. Delphi XE3.
2 авг 19, 17:44    [21940884]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1002
s62,
нашел подсказку в интернете, сработала. В Project manager - правой кнопкой мыши на проекте и выбрать Clean.
2 авг 19, 17:48    [21940887]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1002
s62,
наверное тот же эффект был бы, если сделать Build (я-то запускал по F9).
2 авг 19, 18:00    [21940902]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
ёёёёё
Member

Откуда:
Сообщений: 1004
s62
s62,
наверное тот же эффект был бы, если сделать Build (я-то запускал по F9).

К сожалению, не всегда.
2 авг 19, 18:04    [21940905]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58941
Блог
s62
Почему могут быть неактивны точки останова, брекпойнты?

Общая причина - потому что по какой-то причине отсутствует связь между исходником, открытым в IDE и dcu-шкой, собранной в проект. Ну а почему она нарушена - вариантов много. Общий вариант решения заключается в том, чтобы вычистить с диска все dcu-шки этого модуля, сколько их найдётся, и все версии исходника кроме нужной. Тогда в результате компиляции либо проект не соберётся (и можно будет искать, почему) либо соберётся (и тогда точно будет соответствие и брейкпоинты заработают).
2 авг 19, 18:06    [21940908]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
Пятничная загадка.
Есть TBitmap, из который нужно порезать на тайлы (просто через CopyRect в другие TBitmap-ы).
Вопрос - что будет в итоге если эту операцию распараллелить? Все канвы залочены.
2 авг 19, 20:29    [21940988]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 665
Соколинский Борис,

что-то смутно вспоминается с общей переменной, связанной с битмапом, которая вроде иногда могла себя плохо вести при распараллеливании.
2 авг 19, 20:32    [21940989]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
rgreat
Member

Откуда:
Сообщений: 5399
Vizit0r,

Если работать через ScanLines проблем не будет.
2 авг 19, 20:33    [21940991]     Ответить | Цитировать Сообщить модератору
 Re: Курилка  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 10851
rgreat
Vizit0r,
Если работать через ScanLines проблем не будет.
Это понятно, вопрос в другом. Допустим исходный - DDB, и ScanLine-ов у него нет.
2 авг 19, 20:37    [21940992]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 1511 1512 1513 1514 1515 [1516] 1517 1518 1519 1520 .. 1533   вперед  Ctrl
Все форумы / Delphi Ответить