Page 75 of 91

Re: "Ночные" сборки KolibriOS

Posted: Wed Mar 16, 2016 3:16 pm
by Yason
Serge wrote:YasonДва потока tinypad используют одну область памяти для командной строки при вызове fasm и в качестве буфера для сохранения информации о процессе fn.9 Синхронизация доступа отсутствует. Результат немного предсказуем.
Ясно.

Serge
В свежей н.с., всё работает штатно. Спасибо за исправления. :D :D :D

Re: "Ночные" сборки KolibriOS

Posted: Sun Mar 20, 2016 11:11 am
by punk_joker
После ревизии 6333 не запускается по ассоциации zSea.

Это может быть следствие того, что ФМ не меняют рабочую директорию перед запуском программы?

Re: "Ночные" сборки KolibriOS

Posted: Sun Mar 20, 2016 11:52 am
by Serge
punk_joker
Нет, это я поменял алгоритм загрузки приложения. Буду разбираться.

Re: "Ночные" сборки KolibriOS

Posted: Thu Mar 24, 2016 8:22 pm
by IgorA
Есть подозрение что сист. ф. 68.20 - перераспределить блок памяти в случае не возможности выделить новую память возвращает в eax не 0 как написано в документации, а значение из указателя edx при входе в функцию.
Пробовал в virtualbox создавать виртуальную систему с памятью 128 Мб. Запускал в ней программу animage, которая выделяла 210 Мб (5 буферов под фотографию 14 Мп), и программа вела себя нормально не выдавая никаких сообщений о нехватке памяти. Потом при попытках редактирования изображения сразу закрывалась, очевидно лезла на нехватающую память.

Re: "Ночные" сборки KolibriOS

Posted: Fri Mar 25, 2016 3:37 pm
by Serge
IgorA
Там скорее другое. Память выделяется не сразу, а по мере обращения к страницам, в обработчике страничных ошибок. Когда обработчик не может выделить новую страницу он прибивает процесс.

Re: "Ночные" сборки KolibriOS

Posted: Fri Mar 25, 2016 4:57 pm
by Pathoswithin
Так может при выделении адресов нужно хотя-бы проверять количество свободной памяти?

IgorA
А 5 буферов выделяются одним блоком или по отдельности?

Re: "Ночные" сборки KolibriOS

Posted: Sat Mar 26, 2016 2:36 pm
by Yason
r6371.

Писал программу и заметил баг, связанный с сис. функцией 47 (вывод числа в окно). Тест, проводил на реальном железе.

Если в функции, установить бит увеличения шрифта, с любым множителем, кроме нулевого (например: 0x11ff0000), то, если после этого, попытаться передвинуть окно, больше 1 раза, то окно, намертво виснет. Или может, я чего напутал? Доска отладки, ничего не показывает.

Code: Select all

mcall 47, 0x00080100, 0x11223344, <10, 70>, 0x11ff0000
Прикрепил тестовый код.

Re: "Ночные" сборки KolibriOS

Posted: Sat Mar 26, 2016 3:25 pm
by IgorA
Pathoswithin wrote:Так может при выделении адресов нужно хотя-бы проверять количество свободной памяти?
функцией 18.16 ? Надо попробовать.
Pathoswithin wrote:А 5 буферов выделяются одним блоком или по отдельности?
блок один, а для разделения просто ставятся указатели

Re: "Ночные" сборки KolibriOS

Posted: Sun Mar 27, 2016 12:12 am
by Pathoswithin
Я имел в виду, что если может возникнуть такая проблема, то может в ядре нужно проверять количество свободной памяти перед выделением адресов...

Yason, обрати внимание, что в функции 47 младший бит увеличения шрифта соответствует параметру "неперемещаемое окно" в функции 0.

Re: "Ночные" сборки KolibriOS

Posted: Mon Mar 28, 2016 2:02 am
by Yason
Yason, обрати внимание, что в функции 47 младший бит увеличения шрифта соответствует параметру "неперемещаемое окно" в функции 0.
Ясно. Не обратил внимание на то, что в примере из дистра, в вызове сис. функции 0, макросом mcall, нет принудительной очистки регистра esi.

Спасибо, за подсказку! :)

Re: "Ночные" сборки KolibriOS

Posted: Fri Jun 10, 2016 4:51 pm
by 0CodErr
Это уже не актуально viewtopic.php?f=5&t=1602&start=990#p57305
Serge пофиксил #6318

Re: "Ночные" сборки KolibriOS

Posted: Mon Oct 31, 2016 2:01 am
by Leency
PDF ассоциаций в ФМ не было.
Fplay ассоциации в KFM и KFAR прописаны были не правильно.

Fixed.

Re: "Ночные" сборки KolibriOS

Posted: Thu Nov 10, 2016 7:14 pm
by Leency

Code: Select all

======================================================================
========== Функция 68, подфункция 12 - выделить блок памяти. =========
======================================================================
Параметры:
  * eax = 68 - номер функции
  * ebx = 12 - номер подфункции
  * ecx = требуемый размер в байтах
Возвращаемое значение:
  * eax = указатель на выделенный блок
Замечания:
  * Предварительно следует инициализировать кучу процесса вызовом
    подфункции 11.
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
    размер выделенного блока больше или равен запрошенному.
 
---------------------- Константы для регистров: ----------------------
  eax - SF_SYS_MISC (68)
  ebx - SSF_MEM_ALLOC (12)
Что возвращается в случае неудачи?
0, -1, ... ?

Re: "Ночные" сборки KolibriOS

Posted: Thu Nov 10, 2016 7:50 pm
by b00bl1k
Очевидно, что NULL, указатель всё-таки. Вот выход из user_alloc:

Code: Select all

.m_exit:
        mov     ecx, [current_process]
        lea     ecx, [ecx+PROC.heap_lock]
        call    mutex_unlock
 
        xor     eax, eax
        pop     edi
        pop     esi
        pop     ebx
        ret

Re: "Ночные" сборки KolibriOS

Posted: Thu Nov 10, 2016 8:33 pm
by Leency
Я написал программу, она пытается сделать malloc очень большого размера и на выходе я ожидаю нолу, а получаю какое-то число.
Ядерщики, посмотрите, пожалуйста.