Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » C, С++ | страница 36
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 36 из 37
На страницу: Пред.  1, 2, 3 ... , 35, 36, 37  След.    Перейти:   Все страницы
Поиск в этой теме:
Железный канал: «C, С++»
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
AnrDaemon :
Да, некоторые POSIX API в принципе нельзя перенести на винду.
Но те, что можно, перенесли, они работают, когда ломаются - чинятся и улучшаются.

Ты споришь с призраками, я имел в виду совсем другое.
Да, в цигвине проделали огромную работу по переносу АПИ. Плохо не то, что перенос неполон. Плохо то, что частенько перенос приходится делать через хитрые трюки и грязные хаки.

Приведу пример: под линуксом создание процесса может обломаться по двум причинам: кончились лимиты (rlimit) и кончились таблицы в ядре. В любом случае выход с точки зхрения конечного пользователя очевиден: чуть подождать, прибить ненужные приложения и попробовать снова, авось системе к тому времени полегчает.
А вот когда форк обламывается под цигвином, причин может быть гораздо больше. То, что неоднократно видел я - это то, что цигвиновский рантайм не смог заинджектить свою DLL в запущенный процесс (точнее, заинджектить-то смог, но DLL-ка отмапилась на "неправильный" адрес и усё пропало, шэф, усё пропало). Что делать в этом случае? Машину перезагружать?

AnrDaemon :
Для меня Cygwin это неотъемлемая часть повседневной среды обитания.
Ибо стандартные средства скриптописания в винде ниже плинтуса.

Эммм... Для скриптописания таскать за собой цигвин - это какое-то расстройство, мне кааца. Гораздо надежнее и проще поставить конкретный скриптовый язык (Perl, питон, руби, всё прекрасно живет под виндой). Или тебе без скриптов на баше жизнь не мила?
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 16:33 16-01-2016   
ТехноМаг
 360 EGP


Рейтинг канала: 2(21)
Репутация: 93
Сообщения: 2513
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Grebomet :
(и надо за утилитой лишнюю ДЛЛ-ку таскать


Надо правильные тулчены использовать. И флаги -static-liggcc -static-libstd++ в линковщике. И не нужны уже ни либы, ни Рантаймы многометровые.

AnrDaemon :
редства скриптописания в винде ниже плинтуса.

Bash доставляет, до.

добавлено спустя 4 минуты:
Grebomet :
инджектить свою DLL в запущенный процесс


Ижект и форк несколько разные весчи. Инжект и в виндовом окружение спотыкается регулярно.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (17:54 16-01-2016), всего редактировалось 1 раз
    Добавлено: 17:54 16-01-2016   
AnrDaemon
 862 EGP


Модератор
Рейтинг канала: 8(790)
Репутация: 37
Сообщения: 12318

Зарегистрирован: 17.10.2004
Grebomet :
когда форк обламывается под цигвином, причин может быть гораздо больше.

Обычно причин так же две. Ибо Cygwin не занимается инжектами.
Сбита карта смещений, либо кто-то заинжектил свою библиотеку поперёк стека.
От первого помогает
rebase-trigger full-rebase
и перезапуск сетапа, от второго - снос виновника в нули.

Grebomet :
Или тебе без скриптов на баше жизнь не мила?

Не вижу смысла таскать за собой перл, питон и руби, если достаточно баша.
_________________
Люблю свободный полёт... :)
    Добавлено: 17:55 16-01-2016   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
Репутация: 44
Сообщения: 4179
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
Когда я слышу эту фразу, очень хочется взять черенок от лопаты и залюбить им достаточнобашера вусмерть.
Последнее чудесное поймал пару месяцев назад - скрипт делает rm -rf $DIR/* при этом давольно легко наигрывается ситуация когда DIR - неопределена. Разумеется, от рута и разумеется, много лет в продакшене.
_________________
Конец света в конце тоннеля
    Добавлено: 08:14 17-01-2016   
AnrDaemon
 862 EGP


Модератор
Рейтинг канала: 8(790)
Репутация: 37
Сообщения: 12318

Зарегистрирован: 17.10.2004
Я понимаю твои чувства в этом конкретном случае, но это не означает, что я делаю так же.
_________________
Люблю свободный полёт... :)
    Добавлено: 11:53 17-01-2016   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
ТехноМаг :
Надо правильные тулчены использовать. И флаги -static-liggcc -static-libstd++ в линковщике. И не нужны уже ни либы, ни Рантаймы многометровые.

Конкретно с цигвином это раньше не прокатывало. Как сейчас - не знаю, снес давно и радуюсь до сих пор.

AnrDaemon :
Сбита карта смещений, либо кто-то заинжектил свою библиотеку поперёк стека.
От первого помогает
rebase-trigger full-rebase
и перезапуск сетапа, от второго - снос виновника в нули.

Речь шла о конечном приложении, отгруженном пользователю.

Пользователь научен запускать приложение и дожидаться, пока оно не отработает до конца. Приложение обычно работает, но вот сегодня почему-то - пишет странные вещи и не работает. Пользователь умело запустил программу несколько раз, протер экран, закрыл "ворд" и даже вышел на пару из "вконтактика". Не помогло. Решите проблему СРОЧНОЛЯ, потому что ВСЯРАБОТАСТОИТЛЯ!

Пользователь, естественно, находится в другом городе, удаленные рабочие столы запрещены политикой их компании, сказать внятно ничего не может - ну то есть ситуация вполне рядовая.

Пользователь не знает, от чего помогает rebase-trigger full-rebase, где это счастье находится и как его запустить. Пользователь не может найти виновника, чья длл-ка неожиданно для цигвина загрузилась в другом, нежели у процесса-папы, месте. Просто по физиологическим причинам - руки у него подключены не к голове, а к колену, и способны отрабатывать только коленно-кликательный рефлекс на кнопке "ок".

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

AnrDaemon :
Не вижу смысла таскать за собой перл, питон и руби, если достаточно баша.

А таскать за собой весь зоопарк люниховых утилит, без которых баш еще более убог, чем виндовый command.com - это, значится, глубокоосмысленное дело. Ню-ню.

AnrDaemon :
Я понимаю твои чувства в этом конкретном случае, но это не означает, что я делаю так же.

Не то, чтобы я это как-то осуждал (каждому - свое), но только в данном конкретном случае ты защищаешь свои укоренившиеся привычки. Улыбка
Странноватые, есичесна. Есть вполне себе кроссплатформенные скриптовые языки, их и ставить проще, чем цыгвин, и выбрать можно варианты разных производителей, и работают они быстрее и безглючнее, чем баш цигвиновский.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.

Последний раз редактировалось: Grebomet (23:08 17-01-2016), всего редактировалось 1 раз
    Добавлено: 23:06 17-01-2016   
AnrDaemon
 862 EGP


Модератор
Рейтинг канала: 8(790)
Репутация: 37
Сообщения: 12318

Зарегистрирован: 17.10.2004
1. То, что ты описываешь, может произойти с ЛЮБЫМ приложением абсолютно.
Не вижу разницы. (Конкретно у меня на работе это произошло с MS Office XP. "Ну вот не желаю работать и всё!" сказал он. Хотя "вчера работал"…)
2. То, что существуют "другие языки", я знаю. Но не все будут эти другие языки учить, только чтобы потом разобраться, что делает один скрипт, написанный на [цензура] знает чём.
_________________
Люблю свободный полёт... :)
    Добавлено: 23:11 17-01-2016   
ТехноМаг
 360 EGP


Рейтинг канала: 2(21)
Репутация: 93
Сообщения: 2513
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Grebomet :
Конкретно с цигвином это раньше не прокатывало


Ну потому-что конкретно стандартный цегвиновский gcc требует цегвиновскую же либу и ключи там не помогут (хотя мб -static дописать, но тогда он вообще все слинкует в единую сущность). А вот если доставить binutils и прочее из ветки devel/gcc-mingw, или devel/gcc-gnu-linux все очень даже работает.

Ну или бонально собрать нужный gcc из сурцев и не парится (но мне лениво)
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (01:59 18-01-2016), всего редактировалось 1 раз
    Добавлено: 01:57 18-01-2016   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
ТехноМаг :
Ну потому-что конкретно стандартный цегвиновский gcc требует цегвиновскую же либу и ключи там не помогут

Ото ж.

AnrDaemon :
1. То, что ты описываешь, может произойти с ЛЮБЫМ приложением абсолютно.

Это не так, и ты это прекрасно знаешь.
Далеко не все приложения запускают дочерние процессы, и уж тем более далеко не все патчат память запущенного процесса.

AnrDaemon :
Не вижу разницы.

Да, это известная проблема.

AnrDaemon :
Но не все будут эти другие языки учить, только чтобы потом разобраться, что делает один скрипт, написанный на [цензура] знает чём.

Кому надо - выучит, не облезет, чай, не rocket science. Практически все скриптовые языки просты, как три рубля.

А если наличие скрипта на малознакомом языке удручает чье-то чувство прекрасного - его завсегда можно переписать на чем-то более подходящем.

Даю намек: язык, требующий установки ажно целой мини-ОСи внутри винды, не является более подходящим.

Что касается якобы бедности виндового скриптинга - вы его просто готовить не умеете есть VBS, PowerShell и прочие чудеса, работающие искаропки и умеющие практически усё. Да, слегка не кроссплатформенные, зато не костыль. Да и батники никто не отменял - отлично работают, когда не надо развесистой логики.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 11:53 18-01-2016   
AnrDaemon
 862 EGP


Модератор
Рейтинг канала: 8(790)
Репутация: 37
Сообщения: 12318

Зарегистрирован: 17.10.2004
VBS и PowerShell сами еште. (И,да, я УМЕЮ ими пользоваться, как и CMD. Вещи, которые я на CMD делаю, не все вообще знают, что они в принципе возможны.)
Если VBS ещё можно терпеть, то PowerShell - жуткий пиздец, созданный в попытках задавить упрёки в убогости документации и ущербности стандартизации CMD.
В результате получиось нечто, что вообще непонятно зачем нужно и как использовать.
Только задумайся на минутку, формат вывода информации во всех командах по умолчанию - табличный! Таблицы! В консоли! Ни скопировать, ни отфильтровать.
Grebomet :
Это не так, и ты это прекрасно знаешь.

Это так, и я тебе привёл конкретный пример.
_________________
Люблю свободный полёт... :)
    Добавлено: 16:05 18-01-2016   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
AnrDaemon :
Если VBS ещё можно терпеть, то PowerShell

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

AnrDaemon :
Это так, и я тебе привёл конкретный пример.

... не относящийся к сути обсуждаемой проблемы внутренних хаков цигвина, но плавно уводящий диалог в сторону пустопорожнего трепа.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 02:42 19-01-2016   
ТехноМаг
 360 EGP


Рейтинг канала: 2(21)
Репутация: 93
Сообщения: 2513
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Grebomet :
к сути обсуждаемой проблемы внутренних хаков цигвина


Абще изначально мы тут makefile пытались обсудить, а не цигвин.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 00:46 20-01-2016   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Абще изначально тема про С/С++, а не макефиле. бе-бе-бе...
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 16:24 20-01-2016   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(58)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
Помогите, а то уже крыша едет Разозлен
Из С++ в линуксе пытаюсь создать исполняемый файл (точнее я его принимаю по радиоканалу и пытаюсь сохранить на диск).
При этом получаю то
Segmentation fault
, то
*** Error in `./robot': double free or corruption (out): 0x6b5004e0 ***

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

Может в линуксе есть какие-то настройки безопасности, запрещающие создание приложениями таких файлов?
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.

Последний раз редактировалось: DIMOSUS.X (21:11 28-01-2016), всего редактировалось 1 раз
    Добавлено: 21:11 28-01-2016   
Minx
 985 EGP


Модератор
Рейтинг канала: 2(19)
Репутация: 135
Сообщения: 10533
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
double free or corruption - это проблемы с управлением памятью. т.е. два раза сделал delete/free, вышел за разрешенные пределы и т.п.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 22:18 28-01-2016   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4783
Откуда: Питербурх
Зарегистрирован: 06.01.2003
DIMOSUS.X :
Может в линуксе есть какие-то настройки безопасности, запрещающие создание приложениями таких файлов?

Нет таких. Ищи, где два раза объект удаляешь или за конец выделенного буфера записываешь.

Для начала - собери свою чудо-программу с отладочной информацией (опция -g). А потом прогони ее под valgrind, --tool=memcheck (ну или как-то так). Он тебе вывалит примерно такое:

Код:
==2037==
==2037== Invalid free() / delete / delete[] / realloc()
==2037==    at 0x402719C: operator delete(void*) (vg_replace_malloc.c:457)
==2037==    by 0x8048749: main (test.cc:58)
==2037==  Address 0x42c6028 is 0 bytes inside a block of size 4 free'd
==2037==    at 0x402719C: operator delete(void*) (vg_replace_malloc.c:457)
==2037==    by 0x8048731: main (test.cc:56)
==2037==


Вот по именам файлов и номерам строк и смотри, где что удалялось. В моем примере - первый раз объектик удалился в main.cc:56, а уже через строчку я его удаляю снова.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 23:22 28-01-2016   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
Репутация: 44
Сообщения: 4179
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
Grebomet :
А потом прогони ее под valgrind

Либо предъяви код в сюда. Если там плюсы - в них double free or corruption умеет по довольно неожиданным поводам вылезать. Если нет - вангую, у тебя там что-то связанное с размером либо с использованием строковых функций, натыкающихся на ноль в бинарнике.
_________________
Конец света в конце тоннеля
    Добавлено: 04:41 29-01-2016   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(58)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
****! Уже хочется биться головой об стену...
По радиоканалу передача идет пакетами по 32 байта. Если в пакете первые восемь байт соответствуют маркеру, то он считается управляющим.
Вот какова вероятность, что в файле встретиться последовательность из восьми байт, которую я совершенно рандомно сгенерил? Один из 256^8? Но вот именно это я и поймал...

добавлено спустя 6 минут:
При чем эта моя последовательность встречалась именно в исполняемых файлах Ух ты!..

добавлено спустя 11 минут:
Да если перебирать по 1000 комбинаций в секунду, нужно 500 миллионов лет что бы перебрать их все. А оно у меня на первом же файле...
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.

Последний раз редактировалось: DIMOSUS.X (11:31 29-01-2016), всего редактировалось 4 раз(а)
    Добавлено: 11:28 29-01-2016   
AnrDaemon
 862 EGP


Модератор
Рейтинг канала: 8(790)
Репутация: 37
Сообщения: 12318

Зарегистрирован: 17.10.2004
Напомнить, как Delphi 4 крашилась на компах с видеокартой S3ViRGE ?
Тоже рандомный CLSID сгенерили.
Так что одной только последовательности недостаточно, добавь контрольный код.
Хоть CRC32. Он короткий и легко считается.
_________________
Люблю свободный полёт... :)
    Добавлено: 12:45 29-01-2016   
Minx
 985 EGP


Модератор
Рейтинг канала: 2(19)
Репутация: 135
Сообщения: 10533
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
DIMOSUS.X :
Вот какова вероятность, что в файле встретиться последовательность из восьми байт, которую я совершенно рандомно сгенерил? Один из 256^8? Но вот именно это я и поймал...

Если на той стороне стоит такой же генератор, то вероятность близка к 100% (;
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 15:35 29-01-2016   
Железный канал: «C, С++»
На страницу: Пред.  1, 2, 3 ... , 35, 36, 37  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Главное - концепция, а цвет не важен, к тому же для такой кнопки голубой будет довольно ахтунговен! (void*)

  » C, С++ | страница 36
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18