powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Страшныи глюк в FMX-e под Linux-om
10 сообщений из 10, страница 1 из 1
Страшныи глюк в FMX-e под Linux-om
    #39765256
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Страшныи глюк в FMX-e под Linux-om. Вот код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Procedure TmyThread.Execute;
Var i :Integer;
    s :TStringList;
Begin
  i := 0;
  While i < 10 Do begin
    If i > 2 Then
      Try
        s.Strings[4] := ''
      Except
        On e: Exception Do Begin
          MyMainForm.Memo1.Lines.Add(e.Message);
        End;
      End
    Else
      MyMainForm.Memo1.Lines.Add(i.ToString);
    sleep(1000);
    Inc(i);
  End;
End;



Под wиндои если получаем AV в потоке, то срабатывает обработчик ексепшена, а под Linux-ом апликация просто закривается без каки либо сообшении, просто падает ...
То что обрашаюсь из потока к GUI тут непричём, без обрашения к GUI тож самое.
Пользуюсь тут для GUI-а FMXLinux-ом, разработчик FMXLinux-а говорит, что проблема
в RTL ...

Есть идеи как побороть?

WBR Janex
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39765261
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39765267
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev AlexeyJanex,

http://docwiki.embarcadero.com/RADStudio/Rio/en/Migrating_Delphi_Code_to_Mobile_from_Desktop#Use_a_Function_Call_in_a_try-except_Block_to_Prevent_Uncaught_Hardware_Exceptions

Да, понел, спасибо, но ето помогает только в выше представленом примере или
там где имеютyся соурци и сам можеш подправить.
А как бить, на пример, с родним DataSnap-ом ?
У меня пример - есть DataSnap сервер - простая GUI апликация и DataSnap клиент, тоже
простая GUI апликация. Вызиваю из клиента функцию сервера, всё работает, но если
шас сервер закрить, то на клиенте уже неполучаю AV с чем то типо конект разорван, а апликация проста падает...
В самом DataSnap-е где то, наверно, не учтено ета фигня с try..except

Как тут бить?
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39765285
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Janex,

1. скажи, а где в коде создание локальной переменной s? т.е. где s := TStringList.Create?
2. что в виндах, что в linux/ios/android в потоке нельзя вызывать MyMainForm.Memo1.Lines.Add без синхронизации с основным потоком;

и соответственно, страшный глюк не FMX, а у тебя в голове, нет?
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39765290
Janex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Janex,

1. скажи, а где в коде создание локальной переменной s? т.е. где s := TStringList.Create?
2. что в виндах, что в linux/ios/android в потоке нельзя вызывать MyMainForm.Memo1.Lines.Add без синхронизации с основным потоком;

и соответственно, страшный глюк не FMX, а у тебя в голове, нет?

1. TStringList.Create нету? Серёзно? А ты в код внекал - ето специально чтоб AV получили.
2. Знаю что нельзя, но в етом случае на ето закрил глаза а то в етом варианте ето работает и
проблемы не мне в голове а как раз в FMX.
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39765296
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да у тебя как раз именно вызов MyMainForm.Memo1.Lines.Add(e.Message) из потока может полностью крэшить приложение)))
Про ситуацию с исключениями Kazantsev Alexey дал вполне себе исчерпывающую ссылку. У тебя работает глобальный обработчик исключений? Рекомендую ознакомится с https://github.com/grijjy/JustAddCode/tree/master/ErrorReporting
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39766063
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Да у тебя как раз именно вызов MyMainForm.Memo1.Lines.Add(e.Message) из потока может полностью крэшить приложение)))
Маловероятно
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
function ThreadProc(const Thread: TThread): Integer;
var
  FreeThread: Boolean;
{$IFDEF MACOS}
  pool: Pointer;
{$ENDIF MACOS}
begin
{$IFDEF AUTOREFCOUNT}
  Thread.__ObjAddRef; // this ensures the instance remains for as long as the thread is running
{$ENDIF}
  TThread.FCurrentThread := Thread;
{$IF Defined(POSIX)}
  if Thread.FSuspended then
    pthread_mutex_lock(Thread.FCreateSuspendedMutex);
{$ENDIF POSIX}
{$IFDEF MACOS}
  // Register the auto release pool
  pool := objc_msgSend(objc_msgSend(objc_getClass('NSAutoreleasePool'),
                                    sel_getUid('alloc')), sel_getUid('init'));
{$ENDIF MACOS}
  try
    Thread.FStarted := True;
    if not Thread.Terminated then
    try
      Thread.Execute;
    except
      Thread.FFatalException := AcquireExceptionObject;
    end;

...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39766291
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JanexА как бить, на пример, с родним DataSnap-ом ?
У меня пример - есть DataSnap сервер - простая GUI апликация и DataSnap клиент, тоже
простая GUI апликация. Вызиваю из клиента функцию сервера, всё работает, но если
шас сервер закрить, то на клиенте уже неполучаю AV с чем то типо конект разорван, а апликация проста падает...
В самом DataSnap-е где то, наверно, не учтено ета фигня с try..except

Как тут бить?спамить создателю компонента
но вообще подставу конечно знатную сделали создатели LLVM
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39766328
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если мне память не изменяет, то под Linux можно создавать только консольные приложения. Откуда у вас взялись MyMainForm и Memo1?
...
Рейтинг: 0 / 0
Страшныи глюк в FMX-e под Linux-om
    #39766391
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rkЕсли мне память не изменяет, то под Linux можно создавать только консольные приложения. Откуда у вас взялись MyMainForm и Memo1? Крюков помог?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Страшныи глюк в FMX-e под Linux-om
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]