Страница 1 из 2
ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 17:18:52
Adekamer
из-за ошибки в реализации округлений при подсчете чисел с плавующей точкой есть бага в БСД
в частности в БСД нельзя 529 поделить на 23
калькулятор или в шеле просто отказывается выполнять эту команду - может крашнуть систему
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 17:36:56
idle
Код: Выделить всё
#expr 529 / 23
23
#uname -rs
FreeBSD 4.9-RELEASE
#expr 529 / 23
23
#uname -rs
FreeBSD 7.0-CURRENT
И что?
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 17:41:30
Adekamer
повтори операцию еше десять раз или в цикле
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 17:45:28
idle
Код: Выделить всё
while true; do expr 529 / 23; done
23
23
...
Крутит, не падает.
Оставить на ночь?
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 17:59:48
toughcat
круто... а мужыки-то и не знали...
*побежал постить на ЛОР
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 18:01:34
weec
Adekamer, расскажи подробнее
как повторить проблемную ситуацию, опиши свою конфигурацию
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 18:12:44
terminus
6.2-RELEASE-p11 - не работает, то есть все работает ниче не упало
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 18:47:07
dikens3
Может забанить автора, чтобы не гадил такими постами?
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 19:51:05
pr0t
Может он НетБСД имеет в виду...Или Драгонфлай

Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 20:06:58
Mefis
у меня PCBSD 1.4. калькулятор не считает

вылетает)
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 20:29:22
Alex Keda
вот так - наплодили форков кривых

Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 21:38:39
terminus
Стоило ожидать... Раз уж pbi а не порты, раз уж все монтируется/демонтируетса само без паники, то о каком вообще делении 529 на 23 может идти речь?

Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 22:08:00
f_andrey
lissyara писал(а):вот так - наплодили форков кривых

http://aleksg.livejournal.com/477832.html 
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 22:27:25
terminus
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 22:40:58
f_andrey
Как то навевает на мысль что сегодня день мега прикола 29

судя по коментам к посту это мегабоян, но я как то раньше тоже не слышал, наверное среди математиков так прикалываются

Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-21 23:27:37
princeps
Блин, Адекамер, шутник

Полдня убил, пытался повесить систему извлечением корня из 529

Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-22 8:39:13
Гость
Код: Выделить всё
> sh -c 'echo $((529 / 23))'
> csh -c '@ out= 529 / 23; echo $out'
> expr 529 / 23
> echo 529 / 23 | bc
> echo 529 23 / p | dc
> awk 'BEGIN { print 529 / 23 }'
> echo 'main() { printf("%d\n", 529 / 23); }' | cc -xc -; ./a.out
И все выдают `23', но это не интересно...
Как насчет еще способов для простой арифметики штатными средствами из шелла (perl/python/etc отпадают, ибо не штатные)?
ps, а есть ли способ запустить файл из stdout? а то последний пример выглядит коряво, хотя второй тоже не очень
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-23 9:29:59
zingel
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-23 10:16:29
dikens3
Моя твоя непонима. :-)
Там ответ дан, неправильное использование команды fsstat -M FILE (А реально нужно -M DUMP_CORE) приводит к такой ошибке. Сказал что смотрит код и возможно сделает чтобы выход осуществлялся без FAULT 11, если в параметре -M будет просто файл.
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-23 11:39:58
zingel
fstat валится по сигфолту от 45 байт в функции _kvm_initvtop() /usr/src/lib/libkvm/kvm.c,
Код: Выделить всё
int
kvm_close(kd)
kvm_t *kd;
{
int error = 0;
if (kd->pmfd >= 0)
error |= close(kd->pmfd);
if (kd->vmfd >= 0)
error |= close(kd->vmfd);
if (kd->nlfd >= 0)
error |= close(kd->nlfd);
if (kd->vmst)
_kvm_freevtop(kd);
if (kd->procbase != 0)
free((void *)kd->procbase);
if (kd->argv != 0)
free((void *)kd->argv);
free((void *)kd);
return (0);
}
нужно сделать #define EEXIST 17 на проверке elf-формата фала.
Это ли не баг? Тем боле ответа от девелоперов небыло. Оно там будет лежать пока я не напишу патч, напишу - выложу.
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-23 18:53:50
zingel
Вобщем-то я малость опоздал,
Код: Выделить всё
"Alexander V. Chernikov" <admin@su29.net>
кому 666.root@gmail.com
дата 23.02.2008 17:26
тема Re: i386/120872: fstat exit on signall 11
The following patch fixes an issue on i386/amd64 platforms
kvm_checkheader is a simple cut-n-paste from imgact_elf.c check_header
diff -urN lib/libkvm.orig/kvm.c lib/libkvm/kvm.c
--- lib/libkvm.orig/kvm.c 2008-02-23 17:48:27.000000000 +0300
+++ lib/libkvm/kvm.c 2008-02-23 17:48:33.000000000 +0300
@@ -64,6 +64,8 @@
#include <string.h>
#include <unistd.h>
+#include <machine/elf.h>
+
#include "kvm_private.h"
/* from src/lib/libc/gen/nlist.c */
@@ -136,6 +138,21 @@
return (p);
}
+int
+_kvm_checkheader(void *e)
+{
+ Elf_Ehdr *hdr = e;
+ if (!IS_ELF(*hdr) ||
+ hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS ||
+ hdr->e_ident[EI_DATA] != ELF_TARG_DATA ||
+ hdr->e_ident[EI_VERSION] != EV_CURRENT ||
+ hdr->e_phentsize != sizeof(Elf_Phdr) ||
+ hdr->e_version != ELF_TARG_VER ||
+ hdr->e_machine > MAX_BRANDS)
+ return (ENOEXEC);
+return (0);
+}
+
static kvm_t *
_kvm_open(kd, uf, mf, flag, errout)
kvm_t *kd;
diff -urN lib/libkvm.orig/kvm_amd64.c lib/libkvm/kvm_amd64.c
--- lib/libkvm.orig/kvm_amd64.c 2008-02-23 17:48:27.000000000 +0300
+++ lib/libkvm/kvm_amd64.c 2008-02-23 17:51:27.000000000 +0300
@@ -170,6 +170,11 @@
return (-1);
ehdr = kd->vmst->mmapbase;
+ if (_kvm_checkheader(ehdr) != 0) {
+ _kvm_err(kd, kd->program, "core is not valid ELF core");
+ return (-1);
+ }
+
hdrsz = ehdr->e_phoff + ehdr->e_phentsize * ehdr->e_phnum;
if (_kvm_maphdrs(kd, hdrsz) == -1)
return (-1);
diff -urN lib/libkvm.orig/kvm_i386.c lib/libkvm/kvm_i386.c
--- lib/libkvm.orig/kvm_i386.c 2008-02-23 17:51:03.000000000 +0300
+++ lib/libkvm/kvm_i386.c 2008-02-23 17:51:14.000000000 +0300
@@ -177,6 +177,11 @@
return (-1);
ehdr = kd->vmst->mmapbase;
+ if (_kvm_checkheader(ehdr) != 0) {
+ _kvm_err(kd, kd->program, "core is not valid ELF core");
+ return (-1);
+ }
+
hdrsz = ehdr->e_phoff + ehdr->e_phentsize * ehdr->e_phnum;
if (_kvm_maphdrs(kd, hdrsz) == -1)
return (-1);
diff -urN lib/libkvm.orig/kvm_private.h lib/libkvm/kvm_private.h
--- lib/libkvm.orig/kvm_private.h 2008-02-23 17:48:28.000000000 +0300
+++ lib/libkvm/kvm_private.h 2008-02-23 17:48:33.000000000 +0300
@@ -79,6 +79,9 @@
__printflike(3, 4);
int _kvm_uvatop(kvm_t *, const struct proc *, u_long, u_long *);
+#define MAX_BRANDS 8 /* from sys/imgact_elf.h */
+int _kvm_checkheader(void *);
+
#if defined(__amd64__) || defined(__i386__)
void _kvm_minidump_freevtop(kvm_t *);
int _kvm_minidump_initvtop(kvm_t *);
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-24 3:27:05
Гость
но это всего лишь проверка на заголовок. А если с заголовком все в порядке, а с данными нет, то разве нет шанса эксплуатировать привилегии sgid программы с группой kmem? Если такого шанса нет, то зачем вообще проверять заголовок?
соррри, если сказал глупость
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-24 8:11:15
zingel
проверка заголовка нужна для условия ELF или не ELF-формат, "если с заголовком всё в порядке, а с данными - нет" - такого с ELF не бывает.
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-27 9:50:58
zingel
Re: ХА! Я знаю багу в БСД
Добавлено: 2008-02-27 10:37:46
Гость
там про kernel based
virtual machine, а не про kernel
virtual memory.
А в статусе
Porting Linux KVM To FreeBSD не написано committed.
Перепутал?