-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ошибка в эмуляции rtl8139 #1
Comments
Баг вероятнее всего с кольцевым буффером, я наверное неправильно сделал определение размера этого самого буффера. |
А байты дополнительные или же заменяют часть пакета? |
Заменяет. Где-то 4-6 байтов с конца. |
А есть пример байтов? Это может быть дескриптор следующего пакета. |
Дескрипторы как раз 4 байта размером. |
Hex-дамп (те n байт, сам пакет). На 2 пакете лучше всего видно. Должно было быть какое-то число, а стал мусор. Тут можно посмотреть: https://www.rapidtables.com/convert/number/hex-to-ascii.html
|
Diff для дебага: diff --git a/js/driver/realtek/rtl8139/index.js b/js/driver/realtek/rtl8139/index.js
index bd5c284..0b0ed1e 100644
--- a/js/driver/realtek/rtl8139/index.js
+++ b/js/driver/realtek/rtl8139/index.js
@@ -141,6 +141,7 @@ class RTL8139 {
}
const size = this.rxBuffer.readUInt16LE(this.recvPointer + 2);
const _buf = this.rxBuffer.slice(this.recvPointer + 4, this.recvPointer + 4 + size);
+ console.log(Array.from(_buf).map(c => c.toString(16)).map(c => "0".repeat(2 - c.length) + c).join(" "));
const buf = new Buffer(size);
_buf.copy(buf); |
@imachug |
Как словить эту ошибку? |
Просто запускаешь |
Переполнение кольцевого буффера криво хэндлю. Буффер имеет ёмкость 8 пакетов, поэтому после 8 пакетов и падает. |
Где-то в эмуляции rtl8139 ошибка. Я дебагал, оказалось, что последние ~4 байта у всех пакетов рандомные, поэтому приходят неверные данные, а при Content-Transfer: chunked эти 4 байта приходятся на размер чанка, драйвер парсит размер как NaN и никогда не доходит до конца.
Не уверен, где эмуляция, возможно, настройки в JsOS-CLI, возможно, где-то в недрах QEMU.
The text was updated successfully, but these errors were encountered: