Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mmap bug 
:(
    Опции темы
kirjanov
Дата 6.1.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 3
Всего: 15



Доброго времени уважаемые.
Вот простой тестик:

Код

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <sys/mman.h>

#define FILE_NAME    "test.txt"
#define FILE_MODE    (S_IRUSR | S_IWUSR)
#define FILE_FLAGS    (O_RDWR | O_CREAT | O_TRUNC)

void show_time_stats(int fd, struct stat *stat);

struct stat file_stat;

int main(int argc, char *argv[])
{
    int fd;
    unsigned long *p;
    char *str = "mmap bug";
    int str_len = strlen(str);

    fd = open(FILE_NAME, FILE_FLAGS, FILE_MODE);
    if (fd == -1) {
        perror("open()");
        exit(1);
    }
    if (write(fd, str, str_len) == -1) {
        perror("write()");
        exit(1);
    }
    printf("BEFORE MMAP:\n");
    show_time_stats(fd, &file_stat);
    p = mmap(NULL, str_len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
    if (p == MAP_FAILED) {
        perror("mmap()");
        exit(1);
    }
    printf("sleep some time...\n");
    sleep(3);
    strncpy((char *)p, "test bug", 8);
    if (msync(p, str_len, MS_SYNC) == -1) {
        perror("msync()");
        exit(1);
    }
    printf("data in file was changed\n");
    printf("AFTER MMAP:\n");
    show_time_stats(fd, &file_stat);
    if (munmap(p, str_len) == -1) {
        perror("munmap()");
        exit(1);
    }
    close(fd);
    return 0;
}

void show_time_stats(int fd, struct stat *stat)
{
    fstat(fd, stat);
    printf("time of last access: %s", ctime(&stat->st_atime));
    printf("time of last modification: %s", ctime(&stat->st_mtime));
    printf("time of last status change: %s", ctime(&stat->st_ctime));
}


А вот интересные результаты. Запущено на OpenBSD 4.2:
BEFORE MMAP:
time of last access: Sun Nov 11 11:41:26 2007
time of last modification: Sun Nov 11 11:41:26 2007
time of last status change: Sun Nov 11 11:41:26 2007
sleep some time...
data in file was changed
AFTER MMAP:
time of last access: Sun Nov 11 11:41:26 2007
time of last modification: Sun Nov 11 11:41:29 2007
time of last status change: Sun Nov 11 11:41:29 2007

А вот результаты работы пингвинятко Linux:

BEFORE MMAP:
time of last access: Sun Jan  6 20:27:14 2008
time of last modification: Sun Jan  6 20:33:08 2008
time of last status change: Sun Jan  6 20:33:08 2008
sleep some time...
data in file was changed
AFTER MMAP:
time of last access: Sun Jan  6 20:33:08 2008
time of last modification: Sun Jan  6 20:33:08 2008
time of last status change: Sun Jan  6 20:33:08 2008

Хотелось бы услышать ваше мнение. smile 
PM MAIL   Вверх
MAKCim
Дата 6.1.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



сделал так и подозрения оправдались
Код

...
    sleep(3);
    strncpy((char *)p, "test bug", 8);
    if (msync(p, str_len, MS_SYNC) == -1) {
        perror("msync()");
        exit(1);
    }
    close(fd);
    fd = open(FILE_NAME, FILE_FLAGS, FILE_MODE);
    if (fd == -1) {
        perror("second open()");
        exit(1);
    }
    printf("data in file was changed\n");
    printf("AFTER MMAP:\n");
    show_time_stats(fd, &file_stat);
    if (munmap(p, str_len) == -1) {
        perror("munmap()");
        exit(1);
    }
    close(fd);
    return 0;
....

сейчас гляну, что происходит при sys_close
потом отпишусь


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
MAKCim
Дата 6.1.2008, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



да, это баг
к сожалению 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 7.1.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



kirjanov, 
Чего-то я не догоняю. В чём трабла - то ?


--------------------
PM MAIL WWW   Вверх
MAKCim
Дата 7.1.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



Цитата(GrayCardinal @  7.1.2008,  11:05 Найти цитируемый пост)
Чего-то я не догоняю. В чём трабла - то ? 

файл модифицируется, но это не отражается в st_atime, st_ctime, st_mtime


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 7.1.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 8
Всего: 162



в багзиллу запостили?

Это сообщение отредактировал(а) JackYF - 7.1.2008, 11:28


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bilbobagginz
Дата 7.1.2008, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 14
Всего: 317



smile круто smile
kirjanov, респект.






--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
MAKCim
Дата 7.1.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



Цитата(bilbobagginz @  7.1.2008,  11:40 Найти цитируемый пост)
MAKCim, респект.

а я тут причем?  smile 
это ж не я его (баг) нашел


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bilbobagginz
Дата 7.1.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 14
Всего: 317



я стормозил.
не важно. 

кстати на макинтоше тоже этот баг присутствует.





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
GrayCardinal
Дата 7.1.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



kirjanov, 
Опаньки. А ядро какое ?

Добавлено @ 12:18
А у меня :
Цитата

./1.cxx: In function ‘int main(int, char**)’:
./1.cxx:32: error: invalid conversion from ‘void*’ to ‘long unsigned int*’

(gcc-4.1, 2.6.23 kernel)

Добавлено @ 12:23
И правда, бага smile Кто репорт будет ваять ? ;)


Это сообщение отредактировал(а) GrayCardinal - 7.1.2008, 12:23


--------------------
PM MAIL WWW   Вверх
JackYF
Дата 7.1.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 8
Всего: 162



Цитата(GrayCardinal @  7.1.2008,  11:12 Найти цитируемый пост)
Кто репорт будет ваять ? 

Ну обычно доносчик - он же его нашёл. smile
kirjanov, будешь?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 7.1.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



Цитата(GrayCardinal @  7.1.2008,  12:12 Найти цитируемый пост)
А у меня :

в С++ void* автоматически не приводится к указателю нужного типа


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 7.1.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



По сабжу уже патч пришёл. Кто-то меня опередил ;)

Добавлено через 44 секунды
Цитата

в С++ void* автоматически не приводится к указателю нужного типа 

Не надо ля-ля. С 1.c та же ошибка вылазит.


--------------------
PM MAIL WWW   Вверх
MAKCim
Дата 7.1.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 4
Всего: 207



Цитата(GrayCardinal @  7.1.2008,  12:47 Найти цитируемый пост)
Не надо ля-ля.

ты не прав  smile 
вот пример
Код

int main() {
    void * a;
    char * b = a;
    return 0;
}

Код

# g++ -c b.c
b.c: In function ‘int main()’:
b.c:3: error: invalid conversion from ‘void*’ to ‘char*’
# gcc -c b.c



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GrayCardinal
Дата 7.1.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 18
Всего: 58



MAKCim, 
Забудь.


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Клуб юнуксоидов | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.