- Решение Segmentation fault(11). Или «Axe beats in the balls»
- Вопрос
- ruslan
- ruslan
- ИТ-записки Чорнага кашака
- 23 сентября 2019
- Delphi & Linux. «Project raised exception class Segmentation fault (11)»
- Android delphi приложение Segmentation fault (11) исключение при вызове Firedac
- 2 ответа
- Похожие вопросы:
- Delphi 11, Android: «Segmentation fault 11» или «Exception class 6» при закрытии приложения из-за .CanFocus=True
- Вопрос
- Andrew_A
- Andrew_A
- Segmentation fault on startup in Delphi XE6 Firemonkey application for Android
Решение Segmentation fault(11). Или «Axe beats in the balls»
Ответ от ruslan,
10 марта, 2015
Вопрос
ruslan
ruslan
Добрый день всем тем несчастным кто пишет на фаирманки.
Если ваше приложение (под андроид) делает больше, чем приложения из папки Samples, если оно содержит не только ButtonClick и Memo, то, наверняка, вы постоянно наблюдаете мою «любимую» ошибку при закрытии приложения: Segmentation fault(11).
Если Вам надоело править исходники из папки
покажу Вам свое решение данной, мягко говоря, проблемы.
Подключаем к проекту приложенный .pas и в нужном месте кода(желательно на OnClose главной формы) юзаем процедуру KillMe.
Теперь Ваше приложение всегда будет выгружаться из памяти, а также запускаться с 1-го раза.
п.с. Если посмотреть исходники, то можно понять смысл названия топика.
Источник
ИТ-записки Чорнага кашака
Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами
23 сентября 2019
Delphi & Linux. «Project raised exception class Segmentation fault (11)»
Паника. Паника. Рабочий день уже давно закончен. Пятница. А ведь уже собрался выходить домой.
Паника. Паника. Под Windows же все работало. И черт меня дернул проверить версию под Linux, проверил бы в понедельник. Скорее всего виноваты кривые руки разработчиков Delphi, и метод GetBufferEncoding просто не работает под Linux. Смотрю реализацию GetBufferEncoding — никакой зависимости от операционной системы. Так. Руки разработчиков Delphi реабилитированы.
Паника. Паника. Все .NET-разработчики уже ушли и я в офисе один, как дурак со своим Delphi и Linux. Запускаю отладку под Linux снова. и сползаю со стула — в переменной Encoding уже есть какой-то адрес. Кто ты? А в ответ тишина — мусор по данному адресу разговаривать со мной отказывается. Метод GetBufferEncoding не только возвращает результат в переменную Encoding, но и использует ее для определения кодировки, если она имеет значение отличное от nil. Под Windows компилятор инициализировал переменную Encoding пустым указателем сам, а под Linux оказывается это нужно было сделать программисту.
В том, что я не инициализировал переменную Encoding пустым указателем я, конечно, не виноват. Логично, что виноват компилятор Delphi под Linux — никакой заботы об удобстве программиста!
Баг исправлен. Виновные назначены. Можно спокойно идти домой.
Источник
Android delphi приложение Segmentation fault (11) исключение при вызове Firedac
У меня есть проблема с приложением Delphi XE5 Firedac. Я использую телефон ZTE Blade 3 для запуска приложения. Я использовал deployment manager для добавления файла базы данных в каталог assets\internal. Но когда я звоню FDQuery1.FieldByName(‘ними’).AsString он вызывает исключение Segmentation fault (11).Спасибо.
2 ответа
При попытке запустить менеджер Android SDK в OSX я получаю следующую ошибку: Segmentation Fault: 11 Это работало до сегодняшнего дня. Единственный способ, которым я могу загрузить менеджер Android SDK, — это использовать sudo. Я попытался изменить разрешения папок, и это не помогло. Может ли.
Приложение вышло ненормально с сигналом 11: Segmentation fault: 11 Какова может быть проблема, которая вызывает это?
Ошибка возникает в этой строке:
A segmentation fault означает, что вы ссылаетесь на недопустимую память. Таким образом, это может возникнуть по крайней мере по одной из следующих причин:
- FormTiedot недействителен.
- FormTiedot.EditNimi недействителен.
- FDQuery1 недействителен.
- FDQuery1.FieldByName(‘Nimi’) возвращает nil .
Теперь, насколько я знаю, FieldByName() вызывает исключение, указывающее на сбой, а не возвращает nil . И FDQuery1 , безусловно, действителен, иначе предыдущий код потерпел бы неудачу.
Таким образом, наиболее вероятным выводом является то, что либо FormTiedot , либо FormTiedot.EditNimi являются недействительными. Возможно, вам не удалось создать экземпляр FormTiedot ?
Мне удалось решить (я скомпилировал, и ошибка выдает в функции функцию «TClientModule1.GetServerMethods1Client: TServerMethods1Client;» при доступе к классу FServerMethods1Client. .. Перейти в меню: Проект -> Параметры -> Формы;
Убедитесь, что TClientModule1 является первым в формах автоматического создания.
Похожие вопросы:
Не могу архивировать Мое приложение отлично работает (на основе Xcode 6.3.2, swift) на симуляторе и на нескольких устройствах. Но когда я пытаюсь заархивировать его, я получаю ошибку Command failed.
Я получаю Segmentation fault , когда пытаюсь запустить свое приложение с Android Studio . Я пытался перезагрузить устройство, Android Studio и даже мой PC. Вот что я получаю! Как я могу решить эту.
Моя программа аварийно завершает работу с Segmentation fault при случайном вызове функции обратного вызова. Когда я анализировал ядро, адрес функции обратного вызова был 0x20202020. Программа.
При попытке запустить менеджер Android SDK в OSX я получаю следующую ошибку: Segmentation Fault: 11 Это работало до сегодняшнего дня. Единственный способ, которым я могу загрузить менеджер Android.
Приложение вышло ненормально с сигналом 11: Segmentation fault: 11 Какова может быть проблема, которая вызывает это?
Почему я получаю segmentation fault из следующего кода? .text .globl start start: pushq %rbp movq %rsp, %rbp movq $0xBEEFF00DBEEFF00D, %rax pushq %rax movq $0xF00DBEEFF00DBEEF, %rax pushq %rax movq.
На Rhel5 я получаю segmentation fault при вызове стороннего исполняемого файла C++. К сожалению, у меня нет возможности повторно скомпилировать этот сторонний исполняемый файл с включенными флагами.
Кто-нибудь знает, что происходит с этим segmentation fault (11) в XE5 при запуске на эмуляторе android 2.3? Я видел два других сообщения здесь на SO: Класс segmentation fault (11) Android delphi.
Доброе утро, у меня возникла эта проблема, когда я переписал Create the form, и acessviolation, когда depurei приложение, прежде чем я понял, что ошибка вызвала исключение класса segmentation fault.
Мне пришлось переустановить OS X Lion на свой Macbook Pro, и при попытке использовать git я получил сообщение об ошибке Segmentation fault: 11 . Независимо от того, какую команду git я пытаюсь.
Источник
Delphi 11, Android: «Segmentation fault 11» или «Exception class 6» при закрытии приложения из-за .CanFocus=True
Ответ от Andrew_A,
22 ноября
Вопрос
Andrew_A
Andrew_A
Бага попила много крови, после нахождения причины хотелось плакать и смеяться одновременно.
Дано: Delphi 11.0 Version 28.0.42600.6491, таргет Android x64, дефолтный Android SDK 26.1.1, конечная версия ОС — Android 11. С другой конфигурацией пока не проверял.
Симптом: Приложение вылетает с «Segmentation fault 11» или «Exception class 6» при его закрытии.
Как воспроизвести: бросаем на форму ЛЮБОЙ контрол (например, TButton) со свойством .CanFocus равным True. Запускаем приложение на таргете в режиме отладки. Делаем любое действие с контролом, например, нажимаем наш TButton. Можно даже без обработчика OnClick. Закрываем приложение системной стрелкой Андроида. Ловим Exception.
Как избежать: во ВСЕХ контролах в проекте, имеющих свойство .CanFocus ставим его в False. Проблема изчезает.
P.S. Заметил, что с TSwitch проблема остается даже с .CanFocus=False. С TEdit тоже беда — без .CanFocus=True на Андроиде он просто не работает. Описанное выше подтверждаю как минимум для TButton, TTabItem, TCheckBox, TComboBox, TEdit
Изменено 22 ноября пользователем Andrew_A
Источник
Segmentation fault on startup in Delphi XE6 Firemonkey application for Android
After I attended the Delphi Power Workshop on mobile development with Delphi XE6 in Essen last week, the mobile development virus has taken hold of me. So I tried successfully to compile the demo apps for both, my Nexus 7 tablet and my Samsung Galaxy Note (GT-N7000) smartphone. That these worked out of the box got me hooked even more.
So, now I am writing my first useful App which is going to be a simple random number generator emulating the various dices used in games (In German dice is “Würfel” and there are several standard ones called W4, W6 (that’s the most widely used one), W8, W10, W12 and W20. My App is going to support these and in addition a custom one.
But back to the topic. I created a new “Firemonkey mobile Application” with a simple form, added a few controls and events and tried to run it on my smartphone. It immediately crashed with a segmentation fault in TFormBorder.GetSupported (unit FMX.Forms). Segmentation fault is the Android (Linux) equivalent of an Access Violation on Windows, most likely caused by referencing a NIL pointer. Being new to Android and Firemonkey development, I was expecting some very simple but hard to trace cause for this, like forgetting to call some initialization function I didn’t know about.
First thing I did was typing the error message and the method name into Google, but nothing turned up. Apparently I was the first one who had encountered that problem and talked about it.
So next I put a breakpoint into the method and checked the variables. As expected, there was a NIL pointer: Self was NIL. I traced back up the call stack and found that apparently the form’s ResizeHandle method was called before the form was properly instantiated. Then it dawned to me. I had made one of the most basic mistake in Delphi development: I had forgotten to call inherited Create in the form’s constructor.
So, even an old hand (or old fart, if you prefer that) in Delphi development can make basic mistakes. Also, what was wrong in Delph 1 in 1995 is still wrong in Delphi XE6 in 2014.
After I fixed this problem, everything works as expected.
Источник