LINUX.ORG.RU

Ubuntu 11.10 + bash 4.2 + %VAR% syntax => segfault


0

1

По забывчивости, оставил в файле вот такой код, crash.sh:

#!/bin/bash
YASM=yasm
%YASM% --version
Запустил:
$ ./crash.sh 
Ошибка сегментирования
Среда выполнения Ubuntu 11.10,
$ bash --version
GNU bash, версия 4.2.10(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

Это свободное программное обеспечение; Вы можете бесплатно изменять и распространять его.
There is NO WARRANTY, to the extent permitted by law.

$ yasm --version
yasm 1.1.0.2352
Compiled on Jun 10 2011.
Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
Run yasm --license for licensing overview and summary.

★★★★★

Ответ на: комментарий от anonymous

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

pacify ★★★★★ ()

%VAR% - это из ДОСа. В POSIX надо использовать $VAR.

om-nom-nimouse ★★ ()

gentoo, bash 4.2.20(1), yasm 1.2.0

$ ./crash.sh
./crash.sh: line 3: fg: no job control

Kadi ()
Ответ на: комментарий от sergv

Зачем синтаксис M$-переменных кормить bash-у?

Читай исходное сообщение. По забывчивости.
При переносе скрипта из среды Windows в среду Linux, я забыл убрать %%.

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Это я видел, там нет деталей багов. Попробовал на 4.1.7(1)-release в убунтостудии - не падает. Возможно, таки проблема убунты, если они, скажем, накладывают какие-то патчи.

queen3 ★★★★★ ()

Запустил в http://susestudio.com/a/zpzr67/kde-4-reloaded

bash 4.2.10(1)-release

fg: no job control

Походу проблема убунтопатчей. Можно ещё проверить в 12.04 и фигачить багрепорт в ланчпад.

queen3 ★★★★★ ()
Ответ на: комментарий от max_udoff

LOL. Использование бажного нелатанного софта в составе дистрибуции, это прежде всего проблема дистрибутива.

imul ★★★★★ ()
Ответ на: комментарий от max_udoff

Какой грозный школьник...
Бага только в африканской погремушке. Ubuntu 11.10 + bash 4.2 + %VAR% syntax => segfault (комментарий)
Не надо переваливать с большой головы на здоровую.
В дебиане вон тоже как-то раз ГСЧ «пропатчили».

imul ★★★★★ ()
Ответ на: комментарий от imul

Бага только в африканской погремушке

Я тебе один умный вещь скажу, ты только не падай: убунта - это не какая-то одна программа ubuntu.exe.

max_udoff ()
Ответ на: комментарий от max_udoff

И давно ты это узнал? Наверное вчера?

imul ★★★★★ ()
Ответ на: комментарий от pacify

На работе стоят -dbg пакеты, там даже стектрейс информативный (в pastebin выше), в отличие от домашней системы. Use of uninitialised value of size 8 для __GI___strcasecmp_l, как я понял, это может быть из-за собственно valgrind-а, так что проблемы начинаются с Invalid read of size 1.

Вот кстати похожий баг: https://bugs.launchpad.net/ubuntu/ source/bash/ bug/946401 - стектрейс практически тот же.

queen3 ★★★★★ ()
Ответ на: комментарий от pacify

fg_builtin: в последней 4.2 с сайта баша стоит:

  if (job_control == 0)
    {
      sh_nojobs ((char *)NULL);

однако в старых версиях (того же 4.2 вроде) я видел

  if (!job_control)
    {
      builtin_error ("no job control");

что соответствует моему стектрейсу. Т.е. в последнем bash этот builtin_error изменили. Почему он падает при передаче простой строки, я не знаю, вот код из expr.c:

int
builtin_error (format, arg1, arg2, arg3, arg4, arg5)
     char *format;
{
  fprintf (stderr, "expr: ");
  fprintf (stderr, format, arg1, arg2, arg3, arg4, arg5);
  fprintf (stderr, "\n");
  return 0;
}

sh_nojobs определена как

void
sh_nojobs (s)
     char *s;
{
  if (s)
    builtin_error (_("%s: no job control"), s);
  else
    builtin_error (_("no job control"));
}

Возможно, там забыли _("") т.е. _ поставить...

queen3 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.