Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Флудильня :)
(не знаешь где спросить? спрашивай здесь!)

Флудильня-говорильня, Флеймоварня-отвечальня


Флейм, флуд, holy wars, а также о программировании вообще :)
Допускаются любые обсуждения и высказывания на тему программирования и около.
Просьба не переходить на личности и не обсуждать политику и тд...

Решаемые задачи:
. . . .
     . . . .

первый пост топикстартера
...
во всех разделах форума есть, а чем мы хуже?
есть ведь откровенный флуд почти во всех топиках, так почему бы его не организовать...
сюда можно и holy wars перенести...
название темы естественно обсуждаемо, тут я ни на что не претендую...

в качестве затравки...
прочитал небольшую заметку о разработке советского/российского космического ПО...
и офигел...
оказывается почти всё ПО разработано и продолжает разрабатываться на
внимание!
на Модуле-2!
включая новую ГЛОНАСС...
о как!
--akaGM :)


Всего записей: 25533 | Зарегистр. 06-12-2002 | Отправлено: 15:08 05-11-2008 | Исправлено: shrmn, 09:08 11-12-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Добавлено:
 
 
тока, кажись, я обсчитался из-за високосного :)

Всего записей: 25533 | Зарегистр. 06-12-2002 | Отправлено: 18:41 13-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если собрать программу без ключа -std=c18
То при запуске она вылетает с
 malloc: *** error for object 0x100430000: pointer being realloc'd was not allocated
Если с ключом, то вылетает с менее информативным
Bus error: 10
 
Как можно решить проблему?
 
https://github.com/mikejzx/fancyquotes

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 12:50 22-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Это совершенно слепая ошибка - судя по всему, где то утечка, которая портит структуру распределения памяти. Ловить такой неуловимый баг в чужом проекте такое себе...

Всего записей: 5346 | Зарегистр. 18-09-2018 | Отправлено: 13:43 22-09-2024
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
Как можно решить проблему?

В Вашем коде, на редкость, плохо все. Вот что будет, например, если в
    size_t len = strlen(buf),
        lenw = strlen(with),
        size = len - 1 + lenw;
len и lenw равны нулю?

Всего записей: 1284 | Зарегистр. 10-04-2003 | Отправлено: 18:58 22-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, умеешь ты обрадовать. Была робкая надежда что автор сей программы просто что-то упустил, а тут - на тебе
 
Rock

Цитата:
В Вашем коде, на редкость, плохо все.

код - не мой. Моих знаний не хватит и на такой. Сама программа на предыдущей ОС со своей работой справлялась, а на новой ОС,  увы, не запускается. Если можете это исправить будет здорово.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 10:03 23-09-2024
Rock

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
код - не мой. Моих знаний не хватит и на такой. Сама программа на предыдущей ОС со своей работой справлялась, а на новой ОС,  увы, не запускается.

Засада тогда. При указанных условиях значения выражения будет -1. Тип size_t -- беззнаковый, и технологически для него -1 -- это MAX_INT64. В дальнейшем при выделении памяти не проверяется, смогла ли ЭВМ это сделать.
В итоге программа работает при некоторых входных аргументах, а при некоторых падает. Отношение к подобным проблемам у разных разработчиков разные. Кто-то считает такое положение категорически недопустимым и подобные ошибки являются критическими и требуют незамедлительного исправления, кто-то считает, что пользователь должен внимательно следить за входными данными сам и не допускать описанных ситуаций.

Цитата:
Если можете это исправить будет здорово.

Я не смотрел код. Я посмотрел ровно одно место по Вашему описанию. Лично мне интересно, как современные программисты относятся к таким ошибкам (это классика и тривиально).
Вам, конечно, лучше поискать автора, либо того, кто вникнет в проблему (это займет время). Навскидку, под новой ОС изменились некоторые условия, которые стали приводить к "неправильным" аргументам, приводящим, в том числе, и к упомянутой проблеме.

Всего записей: 1284 | Зарегистр. 10-04-2003 | Отправлено: 10:55 23-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
Моих знаний не хватит и на такой.
а наставить везде по- и предсмертных printf-ов
и завернуть куски кода в try-except хватит?
вот и сделай, так и найдёшь место и причину падения...

Всего записей: 25533 | Зарегистр. 06-12-2002 | Отправлено: 11:24 23-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rock

Цитата:
либо того, кто вникнет в проблему (это займет время).  

Этим я здесь и занимаюсь
 
akaGM

Цитата:
а наставить везде по- и предсмертных printf-ов
и завернуть куски кода в try-except хватит?

Знаний чуть больше чем скопировать/вставить, остальное - темный лес.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 11:41 23-09-2024
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
 
если не знаком с исключениями, то проще всего наставить принтов в каждом блоке
 
в _самом_ начале файла пишешь
(ну или компилируешь с доп. ключом /D_MY_DEBUG_)
 
#define _MY_DEBUG_
 
и в любой блок {} сразу после открывающей { и непосредственно перед закрывающей }
или вообще куда хочешь
 
вставляешь блочок
 
#ifdef _MY_DEBUG_
  printf(">> точка  входа: %4d/n", 1); // и так последовательно нумеровать каждую точку 1..1000 :)
#endif

 
 
#ifdef _MY_DEBUG_
  printf("<< точка выхода: %4d/n; ещё живы :)/n", 1);
#endif

 
 
и в самом конце файла для порядка:
#undef _MY_DEBUG_
 
нo лучше бы, конечно, научиться пользоваться IDE с отладчиком...

Всего записей: 25533 | Зарегистр. 06-12-2002 | Отправлено: 15:41 23-09-2024 | Исправлено: akaGM, 18:11 23-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM, не потяну.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 09:35 25-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Тогда забей на это дело. Честно говоря, я вообще не пойму, нахрена было такой глючный огород городить чтобы просто в тексте кавычки поменять. Это ж в любом текстовом редакторе должно простыми регулярками делаться или я чего то не догоняю?

Всего записей: 5346 | Зарегистр. 18-09-2018 | Отправлено: 10:18 25-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, там достаточно сложная замена.
"test" меняет на \[lq]test\[rq].
.IP "test" - не трогает.
И в таком духе. В редакторе это сделать достаточно сложно, а вручную менять несколько сотен - удовольствие сомнительное.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 12:27 25-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
"test" меняет на \[lq]test\[rq].
.IP "test" - не трогает.

Гммм, а в чем разница?

Всего записей: 5346 | Зарегистр. 18-09-2018 | Отправлено: 12:38 25-09-2024 | Исправлено: MBK2, 12:38 25-09-2024
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
... запуске она вылетает ...  

 
Убери -O3 из Makefile

Всего записей: 1577 | Зарегистр. 01-11-2004 | Отправлено: 12:50 25-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, смотри
содержимое файла
.LP
Test "test" test
.IP "test"
test "test"
.LP
test
.BP "test"
 
программа выдает
fancyquotes -c -r file
 
.LP
Test \[rq]test\[lq] test
.IP "test"
test \[lq]test\[rq]
.LP
test
.BP "test"
 
Попробуй получить такой результат в удобном тебе редакторе.
 
 
ne_viens

Цитата:
Убери -O3 из Makefile

не помогает.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 14:32 25-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Т.е., наличие определенных слов перед первой кавычкой отменяет замену?
Тогда делать в два (точнее, три) прохода - на первом поменять регуляркой все выражения типа .IP "..." , убрав из них кавычки;
заменить оставшиеся кавычки;
вернуть взад заменные в первом пункте выражения.
Впрочем, я не знаю, насколько много подобных исключений и какие еще тонкости таит этот алгоритм, глубоко вникать в логику программы не особо охота

Всего записей: 5346 | Зарегистр. 18-09-2018 | Отправлено: 14:43 25-09-2024
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не помогает.

 
Ну тогда исправить строки  
 
for (char *line; getline(&line, &len, stdin) != -1; line_add(buf, line));
for (char *line; getline(&line, &len, fp) != -1; line_add(buf, line));
 
на
 
for (char *line = NULL; getline(&line, &len, stdin) != -1; line_add(buf, line));
for (char *line = NULL; getline(&line, &len, fp) != -1; line_add(buf, line));
 
соответственнно.

Всего записей: 1577 | Зарегистр. 01-11-2004 | Отправлено: 14:48 25-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MBK2, так и есть. Так что муторно это делать в редакторе.

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 14:52 25-09-2024
MBK2

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens
Как то сомнительно. Напоминает постукивание по шине, обычно локальные переменные всегда инициализируются  
 
Добавлено:
los

Цитата:
Так что муторно это делать в редакторе.

Написать макрос в ворде или npp? :idontnow"?
Все ж конструктивнее, чем искать без отладчика черную кошку в темной комнате.

Всего записей: 5346 | Зарегистр. 18-09-2018 | Отправлено: 14:53 25-09-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens, спасибо. Помогло. Очень выручил.
 
 
Добавлено:
MBK2

Цитата:
Все ж конструктивнее, чем искать без отладчика черную кошку в темной комнате.

ne_viens нашел И вроде бы пока мышей ловит. Возможно на каком-то файле и будет вылетать, но пока все в порядке.
 

Всего записей: 7908 | Зарегистр. 08-09-2001 | Отправлено: 14:57 25-09-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru