LINUX.ORG.RU

Сообщения Vadim_Z

 

Странное поведение splice для блочных устройств на ядрах > 3.6

Форум — Development

Нашел странность в поведении splice на ядрах новее, чем 3.6. Берем такой файл:

#define _GNU_SOURCE
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<errno.h>
#include<stdio.h>

int main(void) {
        int fdi = STDIN_FILENO;
        int fdo = STDOUT_FILENO;
        size_t r;
        fprintf(stderr, "Seeking to %zd\n", lseek(fdo, 0, SEEK_END));
        r = splice(fdi, NULL, fdo, NULL, BYTES_TO_SPLICE, 0);
        fprintf(stderr, "Result: %zd %d\n", r, errno);
        perror("Splice");
        return 0;
}

Он пытается вызвать splice для записи за конец файла в stdout. Создаем блочное устройство:

dd if=/dev/zero of=myfile bs=1M count=100
losetup /dev/loop7 myfile

Пытаемся записать после его конца при разных значениях объема сплайса (BYTES_TO_SPLICE) на ядре 3.6:

# gcc -Wall -DBYTES_TO_SPLICE=4096 tspl.c
# cat /dev/zero | ./a.out > /dev/loop7
Seeking to 104857600
Result: -1 5
Splice: Input/output error
# gcc -Wall -DBYTES_TO_SPLICE=4095 tspl.c
# cat /dev/zero | ./a.out > /dev/loop7
Seeking to 104857600
Result: -1 5
Splice: Input/output error

Казалось бы, все логично. Писать за конец блочного устройства нельзя. Однако возьмем ядро 3.10....

# gcc -Wall -DBYTES_TO_SPLICE=4095 tspl.c
# cat /dev/zero | ./a.out > /dev/loop7
Seeking to 104857600
Result: -1 5
Splice: Input/output error
# gcc -Wall -DBYTES_TO_SPLICE=4096 tspl.c
# cat /dev/zero | ./a.out > /dev/loop7
Seeking to 104857600
Result: 4096 0
Splice: Success

При размере 4096 и больше об ошибке не сообщается. Куда уходят данные, тоже непонятно.

Есть у меня подозрение, что изменение поведения связано вот с этим коммитом.

Хотелось бы, чтобы какой-нибудь грамотный kernel hacker провел этот тест у себя на ядре поновее и привел свои соображения. Если это баг в ядре, то лучше о нем сообщить.

 ,

Vadim_Z
()

Вышел Jim Tcl 0.75

Новости — Open Source
Группа Open Source

Вышла очередная версия Jim Tcl — компактного интерпретатора диалекта языка Tcl. Отличительными особенностями Jim являются: поддержка полноценной сборки мусора, поддержка элементов функциональной парадигмы программирования, а также ориентация на модульность и минимализм.

Основные усовершенствования версии 0.75 касаются ввода-вывода, поддержки словарей (ассоциативных массивов), упаковки и распаковки бинарных данных и др. Также исправлен ряд ошибок.

>>> Подробности

 jim,

Vadim_Z
()

Вышел Tcl/Tk 8.6

Форум — Talks

Тихо и незаметно.

Запилите новость, люди добрые.

Подробности

 ,

Vadim_Z
()

Вышел Tcl/Tk 8.6b3.

Форум — Talks

Сабж. Можно радоваться.

Когда ж релиз, наконец?

Подробности...

 ,

Vadim_Z
()

Haskell и NaN

Форум — Development

Я тут начал изучать Haskell, и у меня возник такой вопрос. Как известно, тип Double имеет, в числе прочих, значения NaN (нечисла). Их можно получить как 0/0 или как read «NaN» :: Double. В соответствии с арифметикой IEEE 754, значения NaN не сравнимы и не равны никаким значениям, даже себе (т.е. любое сравнение NaN, кроме /=, возвращает False). Это можно легко проверить напрямую:

Prelude> let a = 0/0
Prelude> a == a
False

Как такое поведение согласуется с тем, что Double относится к тайпклассам Ord и Eq?

Проблема может быть в том, что функции, использующие инстансы Ord, ожидают, что из сравнений a<b, a>b, a==b хотя бы одно верно, а использование инстансов Eq неявно подразумевает, что значения должны быть равны самим себе. Для NaN эти свойства не выполняются.

Vadim_Z
()

[Qt][грабли?] Время жизни объекта, возвращаемого toAscii

Форум — Development

Нубский вопрос по C++/Qt, навеянный http://www.linux.org.ru/forum/development/5610360 .

Есть такой кусок кода:

   const char *fname = fileName.toAscii().constData();

// <--- здесь делаются какие-то действия, в которых может выделяться память

// <--- здесь должен использоваться fname
   hf = H5Fcreate(fname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

fileName — переменная типа QString.

Как я понял, метод toAscii возвращает объект типа QByteArray, от которого берется constData и объект сразу же уничтожается (потому что выходит из области видимости). В результате указатель, возвращаемый constData(), подвисает, и эти данные могут испортиться (и вроде как портятся) при любой операции, в которой выделяется новая память.

1) Прав ли я?

2) Как исправить эту ошибку? Правильно ли писать так:

   QByteArray barray = fileName.toAscii()
   const char *fname = barray.constData();

// ...

3) Если пункт 1 верен, то (в порядке критики C++) насколько это распространенные грабли?

 

Vadim_Z
()

[UDAV][HDF5]2 abalakin и др.

Форум — Development

Обнаружил странное поведение UDAV: при сохранении данных и скрипта в hdf5-файл (save as), которого еще не существует, создается не файл с указанным именем, а файл '\001' , 'йла или каталога' (sic!) и т.п. Проблема воспроизводится легко: достаточно запустить udav, создать переменные и выполнить «сохранить как», указав любое имя с суффиксом .h5 или .hdf (например, aa.hdf).

Мой анализ (банально вставил отладочные printf-ы) показал, что порча имени происходит в методе ScriptWindow::saveHDF5 при вызове H5Fcreate.

Проблема возникает даже на самом новом релизе (udav 0.7.0.1 + mathgl 1.11.0.1, svn не проверял), а также на udav 0.5.2 + libmgl5 1.9. У меня убунта 10.04 x86_64, hdf5 версии 1.8.4.

Не мог бы кто-нибудь помочь разобраться, из-за чего такое может происходить и как с этим бороться? К сожалению, у меня не хватает времени на самостоятельную отладку.

Вроде как до автора проще достучаться здесь, чем в официальном багтрекере.

Vadim_Z
()

BSD на Asus EEE 901

Форум — Linux-install

Был ли у кого-нибудь из здесь присутствующих успешный опыт установки Free/Open/NetBSD на сабж?

Меня интересует: 1) оптимальная методика установки 2) возможные грабли при установке и использовании.

Vadim_Z
()

[Куплю][Москва]Б/у nokia n800/810/900 в хорошем состоянии

Форум — Talks

Сабж.

Жаббер в профайле.

 ,

Vadim_Z
()

язык S-Lang

Форум — Development

В целях расширения кругозора интересуюсь:

1) В чём фишка языка?
2) Насколько оно живое и применяется?
3) В каких областях и для каких целей его логично использовать?

Vadim_Z
()

Вышла новая версия компилятора MLton

Новости — Open Source
Группа Open Source

После почти трехлетнего перерыва вышла новая версия оптимизирующего компилятора MLton для языка Standard ML.

Основные изменения — поддержка новых платформ (AMD64/Darwin, IA64/HPUX, PowerPC64/AIX), а также исправление ошибок.

MLton осуществляет полнотекстовую (whole-program) компиляцию программ на SML. Полнотекстовая компиляция позволяет достичь высокого уровня оптимизации. Аналогом MLton являются Stalin для Scheme и jhc для Haskell.

MLton поддерживает стандарт SML'97, SML Basis Library, имеет свой FFI (т.е. может вызывать C-функции без оберток) и другие полезные расширения. MLton генерирует небольшие исполнимые файлы,не требующие внешнего рантайма.

Подробнее о языке SML: http://en.wikipedia.org/wiki/Standard_ML

Подробнее о компиляторе: http://mlton.org/Features

>>> Подробности

 , , ,

Vadim_Z
()

Баг движка?

Форум — Linux-org-ru

Смотрим список сообщений:

Саныч забанен (стр. 2 3 4 5 6 7 8 9) (yusri) сегодня 01:03 434/236/-

Идём по ссылке: http://www.linux.org.ru/forum/linux-org-ru/4969669/page8?lastmod=1275771813498

Смотрим последнее сообщение:

BTW, тему по просьбам закрываю

JB ***** (05.06.2010 19:18:06)

Время не совпадает. Так и должно быть?

Vadim_Z
()

[Lisp] вопрос о квадратных скобках

Форум — Development

Что думают местные лисперы о употреблении [] в качестве () ? Хорошо это или плохо, по-вашему?

(Про статус-кво и стандарты не говорим, насколько я знаю, такая конвенция принята в R6RS и многих реализациях Схемы).

 

Vadim_Z
()

Какую систему автоматической сборки Вы применяете?

Голосования — Голосования

  1. а что это? 340 (22%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. никакой, пишу руками Makefile-ы 247 (16%)

    ****************************************************************************************************************************************************************************************************************************************

  3. autotools 190 (12%)

    **********************************************************************************************************************************************************************************

  4. cmake 152 (10%)

    ***********************************************************************************************************************************************

  5. никакой, доверяю IDE 147 (9%)

    ******************************************************************************************************************************************

  6. qmake 118 (8%)

    ***************************************************************************************************************

  7. никакой, пишу скрипты 74 (5%)

    *********************************************************************

  8. никакой, собираю руками 73 (5%)

    ********************************************************************

  9. другой вариант 72 (5%)

    *******************************************************************

  10. ant 65 (4%)

    *************************************************************

  11. scons 34 (2%)

    ********************************

  12. системы, специфичные для языка (ASDF/OCamlMake/hmake/...) 23 (1%)

    *********************

  13. rake 21 (1%)

    *******************

  14. jam 2 (0%)

    *

Всего голосов: 1558

Vadim_Z
()

[M$] BLAS, LAPACK

Форум — Development

Нужна быстрая свободная (или хотя бы бесплатная) реализация BLAS и LAPACK под 32битный оффтопик. Лучше бинари (статика, динамика -- неважно), могу и скомпилировать, но самой винды нет, а есть кросскомпилятор -- так что ATLAS отпадает, по-видимому.

Помогите с советом, где такое можно взять. В крайнем случае скомпилирую reference, но не уверен что это будет быстрой реализацией :)

Vadim_Z
()

Чисто функциональный поиск в DAG

Форум — Development

Имеется направленный ациклический граф, заданный матрицей смежности. Можно ли (и если можно, то как) организовать поиск в глубину в нём чисто функциональным образом за время O(n)?

Vadim_Z
()

[TWIMC] Окасаки

Форум — Development

Chris Okasaki, Purely Functional Data Structures (книга, а не диссертация), находится здесь:

http://www.filefactory.com/file/05b18d/n/0521663504_rar

>>>

Vadim_Z
()

C-библиотека для структур

Форум — Development

Нужна свободная библиотека на C (не C++) для работы со структурами данных (векторы, списки, словари и т.п.). Минимализм и переносимость приветствуется. Про GLib я в курсе, а какие еще есть варианты?

>>>

Vadim_Z
()

Работа (сисадмин, монтажник) в Троицке

Форум — Job

В телекоммуникационную компанию требуются: системный администратор (Linux, FreeBSD); монтажники линий связи (оптика, витая пара), телекоммуникационного оборудовния. Работа в Троицке (Московская область). Зарплата по итогам собеседования.

Подробности по телефону 8 (926) 2723666. Александр.

>>>

Vadim_Z
()

RSS подписка на новые темы