Особенности FreeBSD ??, mikek, 28-Сен-01, 16:03 [смотреть все]Если я добавляю эту функцию в сорцы (просто добавляю, я ее даже не вызываю), то Segmentation Fault -------------- void make_crctable( void ) { unsigned int i, j; UCRC r; for (i = 0; i <= 255; i++) { r = i; for (j = 8; j > 0; j--) { if (r & 1) r = (r >> 1) ^ CRCPOLY; else r >>= 1; } crctable[i] = r; } } ------------- если же я ее заменяю на -------------- void make_crctable( void ) { } ------------- то все работает. И Все это только во FreeBSD, в Windows и в SUSE Linux все работает и так, и так. |
- RE: Особенности FreeBSD ??, Арлекин, 16:36 , 28-Сен-01 (1)
Что значит не вызываю? Когда валится-то? До main() что-ли?
- RE: Особенности FreeBSD ??, Арлекин, 17:22 , 28-Сен-01 (3)
Не думаю, что это глюк ОСы. Кто-то ( библиотеки какие-нить, например ) инициализируется во внешних сегментах, судя по всему, а компилер может пропустил ( глюкавый), может ты предупреждения ему удавил... А вот модули по-разному строятся. Потому где-то идёт. Не зная всего проекта трудно судить. Ябы сделал тупо - закоментарил всё и открывал по логическим кусочкам. Мне лично на первый взгляд не нДравится " crctable = r; " Поставь заплатки и попробуй. Я в основном в солярке трудЮсь, но такие фокусы тоже ловил.
- RE: Особенности FreeBSD ??, mikek, 18:55 , 28-Сен-01 (4)
Да я ее несколько раз пересобрал с нуля, у меня уже свой malloc, strdup, free.Каждое обращение пишется в спец таблицы. и лог файлы. Я под SUSE все писал. А теперь вот под Фрю надо откомпилить. Уже неделю задницу от стула не отрываю.
- RE: Особенности FreeBSD ??, mikek, 18:57 , 28-Сен-01 (5)
[font size="1" color="#FF0000"]Последняя редакция от 28-Сен-01 18:58 ()[/font][p]А что касается crctable = r; то это кто-то квадратные скобки скушал.
- RE: Особенности FreeBSD ??, Арлекин, 20:06 , 28-Сен-01 (6)
Ну переписывать системные вызовы, я считаю не стоило, ибо только они "знают" как ИХ ОСь делает свои дела. Я про другое писАл. У тя есть функция, которая ничего не валит если в ней нету тела. Так? Значит глюк внутри функции. Сначала я сделал бы так: (в моих текстах постоянно плюсы теряются ) void make_crctable( void ) { unsigned int i, j; UCRC r; /* for (i = 0; i <= 255; i ) { r = i; for (j = 8; j > 0; j--) { if (r & 1) r = (r >> 1) ^ CRCPOLY; else r >>= 1; } crctable = r; } */ } Если это пройдет, делаем так: void make_crctable( void ) { unsigned int i, j; UCRC r; for (i = 0; i <= 255; i ) { r = i; for (j = 8; j > 0; j--) { ; /* if (r & 1) r = (r >> 1) ^ CRCPOLY; else r >>= 1; */ } // crctable = r; } } Плевать на результат - если main() получает управление можно сразу выходить по exit(). Продолжая таким образом, ты локализуешь область глюка. Ну и не мешало бы глянуть, а нет ли функции с таким именем в подключенных библиотеках Фри. Черт его знает их компилер. У меня спарковский очень сильно местами не соответствует стандарту. И еще, ( спарковский так глючит ) не стОит собирать плюсовым компилером С-й код. Может и тут дырка.
- RE: Особенности FreeBSD ??, mikek, 13:08 , 01-Окт-01 (7)
>Ну и не мешало бы глянуть, >а нет ли функции с >таким именем в подключенных библиотеках >Фри. Именно в этом и дело. Спасибо, я разобрался.
|