Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Страшныи глюк в FMX-e под Linux-om / 10 сообщений из 10, страница 1 из 1
26.01.2019, 14:11
    #39765256
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
Привет всем.

Страшныи глюк в 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
26.01.2019, 14:22
    #39765261
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
...
Рейтинг: 0 / 0
26.01.2019, 14:42
    #39765267
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
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
26.01.2019, 16:04
    #39765285
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
Janex,

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

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

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

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

1. TStringList.Create нету? Серёзно? А ты в код внекал - ето специально чтоб AV получили.
2. Знаю что нельзя, но в етом случае на ето закрил глаза а то в етом варианте ето работает и
проблемы не мне в голове а как раз в FMX.
...
Рейтинг: 0 / 0
26.01.2019, 16:31
    #39765296
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
Да у тебя как раз именно вызов MyMainForm.Memo1.Lines.Add(e.Message) из потока может полностью крэшить приложение)))
Про ситуацию с исключениями Kazantsev Alexey дал вполне себе исчерпывающую ссылку. У тебя работает глобальный обработчик исключений? Рекомендую ознакомится с https://github.com/grijjy/JustAddCode/tree/master/ErrorReporting
...
Рейтинг: 0 / 0
28.01.2019, 17:04
    #39766063
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
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
29.01.2019, 08:46
    #39766291
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Страшныи глюк в FMX-e под Linux-om
JanexА как бить, на пример, с родним DataSnap-ом ?
У меня пример - есть DataSnap сервер - простая GUI апликация и DataSnap клиент, тоже
простая GUI апликация. Вызиваю из клиента функцию сервера, всё работает, но если
шас сервер закрить, то на клиенте уже неполучаю AV с чем то типо конект разорван, а апликация проста падает...
В самом DataSnap-е где то, наверно, не учтено ета фигня с try..except

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


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