Страница 4 из 6

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 6:30 am
olis
Mad Hatter писал(а): Сб фев 15, 2025 5:41 am
Bobeg писал(а): Сб фев 15, 2025 3:31 am

Можно узнать с помощью поинтер арифметики, кого пытаеца деструктать деструктор - что-то на стеке или че-то на хипе.
Но так мало кто делает патаму што зависит от процессора, от модели памяти и от осы.
Даже не начинай. Там такой зоопарк с форматом стека при разных вызовах, что черт ногу сломит.
Соглашение о вызовах то как раз стандартное , для X86/X64 по крайней мере. Но его необязательно придерживаться и не все это делают. Но вообще для раскрутки стека используется DWARF информация, для С++ из eh_frame.
Если же нет DWARF и не поддерживается соглашение о вызовах, то раскрутка стека невозможна. Но это не про С++.
У меня был проект где как раз требовалась раскрутка стека, но не было ни того, ни другого.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:21 am
Bobeg
olis писал(а): Сб фев 15, 2025 6:17 am
Bobeg писал(а): Сб фев 15, 2025 4:19 am

При покидании фрейма вызываюца деструкторы всего того что было аллоцировано в/на том фрейме. Пункт про необязательно мне не ясен.
Они именно что обязательно инвокируются.
Эксепшен их не обходит.
Ну да. Только при возврате из ф-ции деструкторы стековых объектов тоже вызовутся. И как различить эту ситуацию с эксепшеном?
Ты с чем и о чем спориш.
Фукнция при возврате очищает свой фрейм.
При анвайндинге тоже.
При этом вызываются деструкторы.

Как понимать твою фразу:

"На стеке ведь тоже необязательно удаляются во время раскрутки стека."

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:27 am
Bobeg
x64 это канешно гуд.
Но надо штоб было портабле на арм.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:28 am
Bobeg
Пооооорт
Портабле на аааарм
(петь на мотив борн ту би элайв)


Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:53 am
olis
Bobeg писал(а): Сб фев 15, 2025 7:21 am
olis писал(а): Сб фев 15, 2025 6:17 am
Ну да. Только при возврате из ф-ции деструкторы стековых объектов тоже вызовутся. И как различить эту ситуацию с эксепшеном?
Ты с чем и о чем спориш.
Фукнция при возврате очищает свой фрейм.
При анвайндинге тоже.
При этом вызываются деструкторы.

Как понимать твою фразу:

"На стеке ведь тоже необязательно удаляются во время раскрутки стека."
Ну мы ж вроде обсуждаем - как узнать вызывается деструктор из эксепшн или при удалении объекта из стека. Как различить эти 2 ситуации?

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:57 am
assassello
Mad Hatter писал(а): Сб фев 15, 2025 5:40 am
assassello писал(а): Пт фев 14, 2025 11:56 pm
Осталось разобраться чем std::uncaught_exception отличается от std::uncaught_exceptions.
Удачи. :)
Ты не умничай, а пальцем покажи (с)
А что непонятно? std::uncaught_exception (без s) возвращает bool и совершенно справедливо раскритикована и удалена из c++20.
std::uncaught_exceptions возвращает int и вполне себе используется.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 7:57 am
olis
Bobeg писал(а): Сб фев 15, 2025 7:27 am x64 это канешно гуд.
Но надо штоб было портабле на арм.
Да они там все DWARF используют. И при вызове ф-ций сохраняют в стеке адрес возврата и предыдущее значение base/frame pointer.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:04 am
Bobeg
olis писал(а): Сб фев 15, 2025 7:53 am
Bobeg писал(а): Сб фев 15, 2025 7:21 am

Ты с чем и о чем спориш.
Фукнция при возврате очищает свой фрейм.
При анвайндинге тоже.
При этом вызываются деструкторы.

Как понимать твою фразу:

"На стеке ведь тоже необязательно удаляются во время раскрутки стека."
Ну мы ж вроде обсуждаем - как узнать вызывается деструктор из эксепшн или при удалении объекта из стека. Как различить эти 2 ситуации?
Что означает "деструктор вызывается из иксепшен"?

И при ретурне и при иксепшен кидании функция все равно очищает стак фрейм.

Но при анвайндинге рантайм ищет хендлер.
А при ретурне ексекьюшен возвращаеца к точке вызова.

В обеих ситуациях все что было на стеке будет деструкнуто.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:07 am
Bobeg
Ну и узнать есть ли лайв эксепшен можно.
Это используется всякими бустами чтобы
имплементать анвайнд стак трейс.
Правда в рилиз билдах он очень странно работает.
Лол гыгы.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:08 am
olis
Bobeg писал(а): Сб фев 15, 2025 8:04 am
olis писал(а): Сб фев 15, 2025 7:53 am
Ну мы ж вроде обсуждаем - как узнать вызывается деструктор из эксепшн или при удалении объекта из стека. Как различить эти 2 ситуации?
Что означает "деструктор вызывается из иксепшен"?

И при ретурне и при иксепшен кидании функция все равно очищает стак фрейм.

Но при анвайндинге рантайм ищет хендлер.
А при ретурне ексекьюшен возвращаеца к точке вызова.

В обеих ситуациях все что было на стеке будет деструкнуто.
Эээ...
Bobeg писал(а): Пт фев 14, 2025 4:04 pm
Mad Hatter писал(а): Пт фев 14, 2025 12:52 pm
Напомните, как деструкторе знает, что это unwind, а не принудительное удаление обьекта?
Наверно можьно посмотреть на SP и догадаца.
Но так никто ниделаит.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:10 am
Bobeg
olis писал(а): Сб фев 15, 2025 7:57 am
Bobeg писал(а): Сб фев 15, 2025 7:27 am x64 это канешно гуд.
Но надо штоб было портабле на арм.
Да они там все DWARF используют. И при вызове ф-ций сохраняют в стеке адрес возврата и предыдущее значение base/frame pointer.
Ты дебаггер стандарт и коллинг конвеншены памоему немного миксишь.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:10 am
Bobeg
olis писал(а): Сб фев 15, 2025 8:08 am
Bobeg писал(а): Сб фев 15, 2025 8:04 am

Что означает "деструктор вызывается из иксепшен"?

И при ретурне и при иксепшен кидании функция все равно очищает стак фрейм.

Но при анвайндинге рантайм ищет хендлер.
А при ретурне ексекьюшен возвращаеца к точке вызова.

В обеих ситуациях все что было на стеке будет деструкнуто.
Эээ...
Bobeg писал(а): Пт фев 14, 2025 4:04 pm

Наверно можьно посмотреть на SP и догадаца.
Но так никто ниделаит.
Што ты разэкался.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:14 am
olis
Bobeg писал(а): Сб фев 15, 2025 8:10 am
olis писал(а): Сб фев 15, 2025 7:57 am
Да они там все DWARF используют. И при вызове ф-ций сохраняют в стеке адрес возврата и предыдущее значение base/frame pointer.
Ты дебаггер стандарт и коллинг конвеншены памоему немного миксишь.
Нет. Для раскрутки стека и дебаггер, и С++ exception handling используют DWARF data. Из eh_frame. Дебаггер может из debug_frame использовать, если eh_frame нет. Или смотреть что в стеке.
Но exception handling/stack unwinding в С++ это всегда eh_frame. Он просто компилятором генерится для C++.
Есть еще другие программы, кому stack unwinding тоже нужен. Те что занимаются live patching, например.
Есть библиотеки, libunwind например. Но там тоже только эти 2 метода.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:41 am
Mad Hatter
olis писал(а): Сб фев 15, 2025 6:30 am
Mad Hatter писал(а): Сб фев 15, 2025 5:41 am
Даже не начинай. Там такой зоопарк с форматом стека при разных вызовах, что черт ногу сломит.
Соглашение о вызовах то как раз стандартное , для X86/X64 по крайней мере. Но его необязательно придерживаться и не все это делают. Но вообще для раскрутки стека используется DWARF информация, для С++ из eh_frame.
Если же нет DWARF и не поддерживается соглашение о вызовах, то раскрутка стека невозможна. Но это не про С++.
У меня был проект где как раз требовалась раскрутка стека, но не было ни того, ни другого.
Ну вот ты сам и сказал, что бывают ситуации когда нет нужного фреймворка. Понято что внутри такого все чётко определено, но я об общей ситуации. Кстати, в модели защиты x86 передача параметров между кольцами защиты при вызове метода из другого кольца определён на уровне железа :) но это другое.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 8:42 am
Mad Hatter
assassello писал(а): Сб фев 15, 2025 7:57 am
Mad Hatter писал(а): Сб фев 15, 2025 5:40 am

Ты не умничай, а пальцем покажи (с)
А что непонятно? std::uncaught_exception (без s) возвращает bool и совершенно справедливо раскритикована и удалена из c++20.
std::uncaught_exceptions возвращает int и вполне себе используется.
И это принципиально меняет ситуацию?

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 11:25 am
voyager3
Запретить эти буржуазные экскпшены, и всё тут!

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 11:47 am
assassello
Mad Hatter писал(а): Сб фев 15, 2025 8:42 am
assassello писал(а): Сб фев 15, 2025 7:57 am
А что непонятно? std::uncaught_exception (без s) возвращает bool и совершенно справедливо раскритикована и удалена из c++20.
std::uncaught_exceptions возвращает int и вполне себе используется.
И это принципиально меняет ситуацию?
Хм... никак. Потому что и нет никакой "ситуации". :unknown:
С++ представляет надежное средство, которое (в том числе помогает) кидать эксепшены из деструктора.

Ты о чем вообще?

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 11:53 am
assassello
voyager3 писал(а): Сб фев 15, 2025 11:25 am Запретить эти буржуазные экскпшены, и всё тут!
Можно. Но с какой-то частью Стандартной библиотеки придется проститься, нет?

Честно говоря, сам никогда не пробовал.
Был проект, где жестким условием было "своих исключений не бросаем, чужие - не выпускаем", но давно.

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 12:00 pm
olis
voyager3 писал(а): Сб фев 15, 2025 11:25 am Запретить эти буржуазные экскпшены, и всё тут!
На С++, на котором ядро Симбиоз был написан, так и сделали)

Re: Дебильные вопросы в анкетах на позицию

Добавлено: Сб фев 15, 2025 1:14 pm
alex_127
olis писал(а): Сб фев 15, 2025 12:00 pm
voyager3 писал(а): Сб фев 15, 2025 11:25 am Запретить эти буржуазные экскпшены, и всё тут!
На С++, на котором ядро Симбиоз был написан, так и сделали)
А это что такое?