Page 75 of 91
Re: "Ночные" сборки KolibriOS
Posted: Wed Mar 16, 2016 3:16 pm
by Yason
Serge wrote:YasonДва потока tinypad используют одну область памяти для командной строки при вызове fasm и в качестве буфера для сохранения информации о процессе fn.9 Синхронизация доступа отсутствует. Результат немного предсказуем.
Ясно.
Serge
В свежей н.с., всё работает штатно. Спасибо за исправления.
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 очень большого размера и на выходе я ожидаю нолу, а получаю какое-то число.
Ядерщики, посмотрите, пожалуйста.