OSDev
http://osdev.su/

Баги
http://osdev.su/viewtopic.php?f=18&t=496
Страница 1 из 3

Автор:  Bargest [ 19 фев 2012, 16:02 ]
Заголовок сообщения:  Баги

В очередной раз потестил ОСь в QEMU, все ок. Потестил на вмваре - не пашет. Нашел мегабаг в куему.
Оказалось, я случайно указал в PDE таблице (т.е. в пейдж директории) виртуальный адрес таблицы страниц (для страниц, на которые отображено ядро). И оно работало в QEMU! Как - для меня загадка.

Автор:  JSON [ 20 фев 2012, 12:32 ]
Заголовок сообщения:  Re: Баги

та это ж не мелочи, а основа основ, как тукое может быть, чтобы PDE работал.
Может банально упущен флаг разрешения страничной памяти???

Автор:  Bargest [ 20 фев 2012, 17:37 ]
Заголовок сообщения:  Re: Баги

В том-то и дело, что это основы основ. И что страничное преобразование используется (в Long-Mode иначе не бывает).
Я при формировании PDE процесса случайно вписал в адрес таблицы 480+ ГБ (видимо думал о чем-то левом, когда писал это:)). Это был виртуальный адрес таблицы страниц ядра (в памяти, куда отображено ядро). И в куему оно работало. В вмваре, разумеется, нет: слетало при переключении процесса сразу после
Код:
mov rax, cr3
mov cr3, rax

с тройной ошибкой (естественно, IDT же тоже накрылась).
Но КАК работает куему - я не втыкаю.

Автор:  Bargest [ 17 апр 2012, 14:32 ]
Заголовок сообщения:  Re: Баги

Кто-нибудь пробовал запускать в куему более 56 ядер процессора? У меня ОС слетает начиная с 57 ядер в ней, и я всё думаю: это баг оси или куему? В оси вроде как все норм, код один и тот же, разница в теории может начаться после 64 ядер. Но 57... Причем инициализация проходит, а потом феил.

Автор:  DJ PhoeniX [ 09 май 2012, 01:28 ]
Заголовок сообщения:  Re: Баги

В тему о багах: http://habrahabr.ru/qa/19171/
На тему QEMU я не удивлён, но VirtualBox меня огорчил.

Автор:  grindars [ 09 май 2012, 21:56 ]
Заголовок сообщения:  Re: Баги

Движок VirtualBox делали на основе кодовой базы QEMU, отсюда и общие баги. А такое наплевательское отношение к реализации понятно: делают же не чтобы соответствовало спекам, а чтобы мейнстримные оси работали. А ни одна из них аппаратную многозадачность не использует.

Автор:  DJ PhoeniX [ 10 май 2012, 08:24 ]
Заголовок сообщения:  Re: Баги

grindars писал(а):
Движок VirtualBox делали на основе кодовой базы QEMU, отсюда и общие баги
Могли бы пофиксить, не? Это же Oracle. Легенда, разработчик Solaris, Java, MySQL, VirtualBox... А если в каждом из них сейчас по куче таких багов, на которые забили, ибо "мейнстримовый софт не жалуется"?
grindars писал(а):
а чтобы мейнстримные оси работали
Вот и меня спросили...
michaln писал(а):
OK... please provide a testcase, or even better, point to some commercial operating system which uses this technique.

Автор:  grindars [ 10 май 2012, 09:21 ]
Заголовок сообщения:  Re: Баги

Да не Oracle это. Изначально VirtualBox написала Innotek, которую купили Sun, а санки уже купила Oracle. Разработчики там те же самые, и Oracle на VirtualBox в общем-то пофиг: даже близко не основной источник прибыли.

Встречался я с багами в нем, и получал тот же ответ. Типа, не хотят они тратить время на поддержку фич проца, которые никому, кроме осеписателей-маньяков не нужны.

Не могли бы вы подробно описать, как именно у вас используются TSS? Вероятно, смогу подсказать совместимое решение.

Автор:  DJ PhoeniX [ 10 май 2012, 09:40 ]
Заголовок сообщения:  Re: Баги

grindars писал(а):
Не могли бы вы подробно описать, как именно у вас используются TSS? Вероятно, смогу подсказать совместимое решение.
Да решение то я уже нашёл, собственно, в ответе к багу я приложил и код оси с "commented fix for VBox", и код, приводящий к сбою.

И, если уж купили - отвечайте. Поддерживайте статус топовой компании, не давайте разработчикам пинать половые органы...

Автор:  grindars [ 10 май 2012, 10:11 ]
Заголовок сообщения:  Re: Баги

Понял, как вы делаете. Я в первоначальном варианте использовал пару TSS с копированием контекста из них в контекст потока, затем перешел на программную переключалку. Т.е. если у нас две TSS (T1 и T2) и три потока, то переключение происходило так: T1(A) -> T2(B) -> T1(C) -> T2(A) -> .... Суть в том, чтобы никогда не сбрасывать флаг busy вручную.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/