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/ |