Page 3 of 9

Re: Эмулятор под Linux

Posted: Mon Apr 02, 2018 11:47 pm
by Leency
У нас многомерное общение больше похожее на чят :)

0CodErr
Ты можешь пофиксить @open ?
Пока писал сообщение психанул и пофиксил сам #7217.

Re: Эмулятор под Linux

Posted: Wed Apr 04, 2018 10:57 am
by 0CodErr
tsdima, у меня тоже есть проблема с libimg.
Обычно выполнение заканчивается вылетом примерно после

Code: Select all

EIP    = $0000017E; EAX    = $00000044; EBX    = $00000014; ECX    = $00000464
EDX    = $00000000; ESI    = $00000464; EDI    = $0414A18C; EBP    = $0412FDF0
ESP    = $0412FDE4; EFLAGS = $00010202
HeapReallocate(MemPtr:$00000000, Bytes:1124)
Я не учёл, что KolibriOS.HeapReallocate работает иначе, чем Windows.HeapRealloc
======================================================================
======= Function 68, subfunction 20 - reallocate memory block. =======
======================================================================
Parameters:
* eax = 68 - function number
* ebx = 20 - subfunction number
* ecx = new size in bytes
* edx = pointer to already allocated block
Returned value:
* eax = pointer to the reallocated block, 0 = error
Remarks:
* Before this call one must initialize process heap by call to
subfunction 11.
* The function allocates an integer number of pages (4 Kb) in such
way that the real size of allocated block is more than or equal to
requested size.
* If edx=0, the function call is equivalent to memory allocation
with subfunction 12. Otherwise the block at edx
must be allocated earlier with subfunction 12 or this subfunction.
* If ecx=0, the function frees memory block at edx and returns 0.
* The contents of the block are unchanged up to the shorter of
the new and old sizes.
Программа ожидала выделения памяти, а его не произошло.

Re: Эмулятор под Linux

Posted: Wed Apr 04, 2018 2:23 pm
by tsdima
Сделал рудиментарную поддержку сети. WebView уже работает. Почему-то не работают Downloader и NsInstall. Вобщем, глючно пока, но куда копать - непонятно.

Re: Эмулятор под Linux

Posted: Wed Apr 04, 2018 11:00 pm
by JohnXenox
tsdima wrote:Сделал рудиментарную поддержку сети. WebView уже работает.
А у меня, не работает.

Вот скрин:

Image
Полный лог из терминала:
Spoiler:

Code: Select all

~/.kex $ ./kex "root/RD/1/File Managers/EOLITE"
02.00000AEF: mcall 37, 0x4, 0x24C4, 0x1
02.00000B19: mcall 37, 0x5, 0x0, 0x0
<html> found
Document has no information about encoding, UTF will be used
02.00000B08: mcall 37, 0x5, 0x25, 0x0
02.00000B19: mcall 37, 0x5, 0x0, 0x0
Usage: nmcli device { COMMAND | help }

COMMAND := { status | show | connect | reapply | disconnect | delete | monitor | wifi | lldp }

  status

  show [<ifname>]

  set [ifname] <ifname> [autoconnect yes|no] [managed yes|no]

  connect <ifname>

  reapply <ifname>

  disconnect <ifname> ...

  delete <ifname> ...

  monitor <ifname> ...

  wifi [list [ifname <ifname>] [bssid <BSSID>]]

  wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [ifname <ifname>]
                         [bssid <BSSID>] [name <name>] [private yes|no] [hidden yes|no]

  wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] [channel <channel>] [password <password>]

  wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...]

  lldp [list [ifname <ifname>]]

Error: 'dev' command 'list' is not valid.
Contacting DNS server failed with EAI code: 00000004
HTTP GET error!
bufsize: 0
02.00000B19: mcall 37, 0x5, 0x0, 0x0
<html> found
cur_encoding    : 6
set_new_encoding: 5
Ещё заметил, что во время запуска OPENDIAL, в терминале почему-то выводятся сообщения о ненайденных файлах .obj. Но эти файлы присутствуют.

Вот скрин:

Image

Re: Эмулятор под Linux

Posted: Wed Apr 04, 2018 11:31 pm
by Leency
Снова регистр?

Re: Эмулятор под Linux

Posted: Thu Apr 05, 2018 12:16 am
by JohnXenox
Leency wrote:Снова регистр?
На гитхабе написано:
[github] tsdima wrote:case insensitive file search
Это-то и странно. Пробовал со ссылкой и без. Результат, в обоих случаях, тот же.

Re: Эмулятор под Linux

Posted: Thu Apr 05, 2018 1:10 am
by 0CodErr
JohnXenox wrote:Ещё заметил, что во время запуска OPENDIAL, в терминале почему-то выводятся сообщения о ненайденных файлах .obj. Но эти файлы присутствуют.
Вообще-то тех файлов не должно быть в папке File managers. Если только ты их сам туда не положил.
А так OpenDialog сперва ищет библиотеки в своей папке и, если не находит, то как обычно в /sys/lib.
Странная логика, как мне кажется, ведь это же системные библиотеки и они должны быть как раз в /sys/lib, а не в папке с программой.

Re: Эмулятор под Linux

Posted: Thu Apr 05, 2018 3:58 am
by JohnXenox
0CodErr wrote:Вообще-то тех файлов не должно быть в папке File managers. Если только ты их сам туда не положил.
Нет в папке с OPENDIAL их нет, и туда их не клал. Я имел ввиду, что файлы присутствуют в принципе, в частности в папке ~/.kex/root/RD/1/LIB.
0CodErr wrote:А так OpenDialog сперва ищет библиотеки в своей папке и, если не находит, то как обычно в /sys/lib.
Странная логика, как мне кажется, ведь это же системные библиотеки и они должны быть как раз в /sys/lib, а не в папке с программой.
Вот и мне, кажется это странным. Файлы есть, а ворнинги всё-равно выводятся.

Re: Эмулятор под Linux

Posted: Thu Apr 05, 2018 9:45 am
by tsdima
JohnXenox wrote:Файлы есть, а ворнинги всё-равно выводятся.
Предупреждения выводятся при попытке загрузить библиотеку. Я же не виноват, что OpenDialog ищет их сначала в текущем каталоге. Обычно, если программа грузит библиотеку, но её нет, то это что-то не совсем обычное, поэтому я и вывожу предупреждение. В данном случае можно игнорировать эти сообщения.

По поводу nmcli: я подозревал, что на других дистрибутивах могут быть другие параметры, или другой формат вывода. Но другого способа получить адрес DNS и gateway (причём полученный по DHCP) я пока не нашёл. Без адреса DNS сеть работает, но толку мало. Можно попытаться задать статическую конфигурацию в network.ini и запустить @zeroconf, а потом посмотреть, что выдаёт netstat. Если получится установить адрес DNS, то сеть должна заработать.

Re: Эмулятор под Linux

Posted: Thu Apr 05, 2018 12:16 pm
by tsdima
Попробовал вышеописанный метод - пришлось кое-что пофиксить. Теперь статическую конфигурацию можно задавать в network.ini и запускать @zeroconf.

Re: Эмулятор под Linux

Posted: Fri Apr 06, 2018 4:13 am
by JohnXenox
tsdima wrote:Предупреждения выводятся при попытке загрузить библиотеку. Я же не виноват, что OpenDialog ищет их сначала в текущем каталоге.
Тебя никто, ни в чём, не обвиняет. Я просто указал на неправильное, с моей точки зрения, поведение эмулятора, которое вводит в заблуждение. И если эмулятор делает какие-то неправильные или странные вещи, то это, либо недоработка, либо личные предпочтения автора эмулятора.

На мой вгляд, неправильно выводить в терминал далеко некритические сообщения, в то время, когда программа OPENDIAL, по существу, имеет все необходимые файлы для удавлетворения своих потребностей и корректной работы. Кстати сама программа, в Колибри, в такой ситуации, ворнинги не выводит, что вполне логично.
tsdima wrote:Обычно, если программа грузит библиотеку, но её нет, то это что-то не совсем обычное, поэтому я и вывожу предупреждение.
Когда библиотеки нигде нет, не найдена - это да. Но когда библиотека есть и/или найдена, в одной из директорий прописанных в программе, то это нормальная ситуация. Программа проверяет все директории, которые в ней прописаны, на наличие нужной библиотеки, и если библиотека найдена, запускается, а если нет, то выбрасывает ворнинг. К тому же, эмулятор не должен ничего решать за программу, которую он эмулирует. Если программа не выбрасывает ворнинг, то и эмулятор, не должен за неё это делать.
tsdima wrote:В данном случае можно игнорировать эти сообщения.
Хорошо, буду игнорировать.
tsdima wrote:По поводу nmcli: я подозревал, что на других дистрибутивах могут быть другие параметры, или другой формат вывода. Но другого способа получить адрес DNS и gateway (причём полученный по DHCP) я пока не нашёл. Без адреса DNS сеть работает, но толку мало. Можно попытаться задать статическую конфигурацию в network.ini и запустить @zeroconf, а потом посмотреть, что выдаёт netstat. Если получится установить адрес DNS, то сеть должна заработать.
Ясно.

P.S. Прошу бурно не реагировать на моё сообщение. Я просто выложил своё видение по этому поводу.

Re: Эмулятор под Linux

Posted: Fri Apr 06, 2018 4:16 am
by JohnXenox
tsdima wrote:Попробовал вышеописанный метод - пришлось кое-что пофиксить. Теперь статическую конфигурацию можно задавать в network.ini и запускать @zeroconf.
Позже попробую, но не уверян, что что-то получится. Я в этом полный нуб.

Re: Эмулятор под Linux

Posted: Fri Apr 06, 2018 9:16 am
by tsdima
JohnXenox wrote:На мой вгляд, неправильно выводить в терминал далеко некритические сообщения
Ну, поначалу, сообщение о ненайденной библиотеке было критичным :)
Можно убрать это сообщение, но тогда будет непонятно, почему не работает программа, если библиотеки действительно нет. Не все программы ругаются, если не нашли библиотеку.

В последней версии работает pcidev. Заметил, что есть программы, которые требуют наличия /tmp0/1, так что каталог ~/.kex/root/TMP0/1 тоже нужно создавать. В Колибри это делается запуском launcher-a, но он запускает кучу ненужных эмулятору вещей (например @zeroconf, в эмуляторе не нужно запрашивать dhcp, оно сейчас и не работает, поэтому адрес получается случайный, работает только статическая конфигурация, но в kolibri.img по-умолчанию стоит auto).

Можно сделать, чтобы эмулятор сам создавал /tmp0/1, но сколько ещё таких костылей будет? Нужно ли это делать? С одной стороны, человек, мало знакомый с Колибри ОС не догадается сам это сделать, но с другой стороны, если бы не было запуска tmpdisk в autorun.dat, то поведение программ, требующих /tmp0/1, мало чем отличалось бы.

Re: Эмулятор под Linux

Posted: Sun Apr 08, 2018 10:11 pm
by JohnXenox
tsdima wrote:Ну, поначалу, сообщение о ненайденной библиотеке было критичным :)
Можно убрать это сообщение, но тогда будет непонятно, почему не работает программа, если библиотеки действительно нет. Не все программы ругаются, если не нашли библиотеку.
Задача эмулятора Колибри - это как можно точнее эмулировать работу Колибри, а не улучшать, профилировать или отлаживать программу, которая эмулируется. Если программа не ругается, то это только проблема программы. Но с программой OPENDIAL другой случай, у неё функция ругани есть, и она срабатывает только в действительно критической ситуации. А у тебя эмулятор ругается за саму программу, в то время, когда у программы никакой критической ситуации нет. Конечно, другое дело, если это сделано в целях отладки эмулятора.
tsdima wrote:В последней версии работает pcidev.
Отлично. :D
tsdima wrote:Заметил, что есть программы, которые требуют наличия /tmp0/1, так что каталог ~/.kex/root/TMP0/1 тоже нужно создавать. В Колибри это делается запуском launcher-a, но он запускает кучу ненужных эмулятору вещей (например @zeroconf, в эмуляторе не нужно запрашивать dhcp, оно сейчас и не работает, поэтому адрес получается случайный, работает только статическая конфигурация, но в kolibri.img по-умолчанию стоит auto).

Можно сделать, чтобы эмулятор сам создавал /tmp0/1, но сколько ещё таких костылей будет? Нужно ли это делать? С одной стороны, человек, мало знакомый с Колибри ОС не догадается сам это сделать, но с другой стороны, если бы не было запуска tmpdisk в autorun.dat, то поведение программ, требующих /tmp0/1, мало чем отличалось бы.
Я думаю, так как директория /rd/1 создаётся вручную, то /tmp0/1, тоже должна создаваться вручную. А пользователя, можно предупредить на github.

Что-то вроде:
Для некоторых программ Колибри требуется директория /tmp0/1.
Чтобы создать директорию /tmp0/1, введите в терминале:

cd ~/.kex/root && mkdir tmp0 && mkdir tmp0/1

Re: Эмулятор под Linux

Posted: Mon Apr 09, 2018 5:29 pm
by tsdima
Сделал максимизацию по двойному клику на заголовке. Растягивание окон тоже должно работать, т.к. теперь оно делается ещё и вручную (т.е. независимо от оконного менеджера). Делается не совсем так, как в реальной Колибри, но лучше уж так, чем совсем никак.