Bug 10357 - mdassemble crashes
: mdassemble crashes
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/mdadm)
: unstable
: all Linux
: P2 blocker
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2006-12-02 16:04 by
Modified: 2007-03-06 00:32 (History)


Attachments
mdadm.conf (385 bytes, text/plain)
2006-12-02 16:07, Sergey Bolshakov
no flags Details
mdadm-2.6-alt2.1.src.rpm.diff (1.57 KB, patch)
2007-01-28 18:24, Sergey Vlasov
no flags Details | Diff
Fixup from evseev@ (also fixes #10727 and cleanups patchset) (2.12 KB, patch)
2007-01-29 02:41, evseev
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2006-12-02 16:04:43
mdadm-2.5.6-alt1:

# /sbin/mdassemble 
Segmentation fault
#
собранный динамически с glibc работает нормально.
Предыдущие сборки работали нормально.
------- Comment #1 From 2006-12-02 16:07:31 -------
Created an attachment (id=1695) [details]
mdadm.conf
------- Comment #2 From 2007-01-04 11:47:08 -------
Не могу воспроизвести.
Моя конфигурация:

# egrep -v '^$' /etc/mdadm.conf | egrep -v '^#'
MAILADDR root
PROGRAM /usr/sbin/mdadm-syslog-events
ARRAY /dev/md0 UUID=c72dca0f:89258766:c4fc8ff9:aa0fdc2a

# ./mdassemble 
mdadm: /dev/md0 has been started with 2 drives.

# ./mdadm -D /dev/md0
/dev/md0:
        Version : 00.90.00
  Creation Time : Wed Jul 27 21:03:57 2005
     Raid Level : raid1
     Array Size : 96256 (94.02 MiB 98.57 MB)
    Device Size : 96256 (94.02 MiB 98.57 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Thu Jan  4 11:18:34 2007
          State : active
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : c72dca0f:89258766:c4fc8ff9:aa0fdc2a
         Events : 0.9

    Number   Major   Minor   RaidDevice State
       0       3        8        0      active sync   /dev/hda8
       1       3        9        1      active sync   /dev/hda9

# ./mdadm -V
mdadm - v2.5.6 - 9 November 2006

# grep diet ./mdassemble
Binary file ./mdassemble matches
------- Comment #3 From 2007-01-22 17:32:55 -------
Сейчас в Сизиф ушла сборка 2.6-alt1.
В ней этот баг остался?
------- Comment #4 From 2007-01-27 14:03:33 -------
2.6-alt2, падает, как и раньше.
у меня raid1 на двух дисках целиком, если это важно.
------- Comment #5 From 2007-01-28 18:24:51 -------
Created an attachment (id=1766) [details]
mdadm-2.6-alt2.1.src.rpm.diff

Это несовместимость текущего релиза dietlibc с реализацией -fstack-protector в
текущей версии gcc4.1, которая там включена по умолчанию.  Обходится сборкой с
-fno-stack-protector.
------- Comment #6 From 2007-01-29 02:33:32 -------
Не совсем понятно, зачем в alt2.1 делается одновременно
и "%define mdassemble_cflags -fno-stack-protector",
и "BuildPreReq: dietlibc >= 0.30-alt2".

По идее, достаточно чего-то одного:
mdassemble_flags должен нормально подружить gcc 4.1 со старой dietlibc,
dietlibc 0.30-alt2 должна нормально работать с gcc 4.1 без доп.флагов.

Второй вариант строже, первый проще портировать на ALM24.
------- Comment #7 From 2007-01-29 02:41:39 -------
Created an attachment (id=1767) [details]
Мой вариант исправления этой баги (с исправлением #10727 и подчисткой патчей)
------- Comment #8 From 2007-01-29 12:38:04 -------
(In reply to comment #6)
> dietlibc 0.30-alt2 должна нормально работать с gcc 4.1 без доп.флагов.

К сожалению, в данный момент это не так. Хотя на самом деле старые бинарные
сборки dietlibc всё-таки работают - они просто не пересобираются из исходников
при использовании нового gcc4.1 (падают в процессе сборки, так что пропустить
эту проблему незаметно всё-таки не удастся).

А вот польза от условных BuildRequires сомнительна - зависимости фиксируются в
момент сборки src.rpm.

> Второй вариант строже, первый проще портировать на ALM24.

Туда это изменение портировать не обязательно - там в gcc не было
-fstack-protector по умолчанию (более того, я подозреваю, что версия gcc из
ALM24 вообще не поддерживает опцию -fno-stack-protector).
------- Comment #9 From 2007-02-01 04:44:42 -------
(In reply to comment #8)
> (In reply to comment #6)
>> dietlibc 0.30-alt2 должна нормально работать с gcc 4.1 без доп.флагов.
> 
> К сожалению, в данный момент это не так. Хотя на самом деле старые бинарные
> сборки dietlibc всё-таки работают - они просто не пересобираются из исходников
> при использовании нового gcc4.1 (падают в процессе сборки, так что пропустить
> эту проблему незаметно всё-таки не удастся).

Значит, тем более незачем указывать требуемую версию - в среде с gcc4.1 diet 
будет либо иметь её, либо отсутствовать вообще.

> А вот польза от условных BuildRequires сомнительна - зависимости фиксируются в
> момент сборки src.rpm.

Как тогда лучше поступить?
Хочется иметь общий spec для всех сборок.
------- Comment #10 From 2007-02-04 21:53:54 -------
В dietlibc-0.30-alt3 проблема устранена правильным способом - теперь для сборки
достаточно использовать CC='diet gcc', опция -fno-stack-protector добавляется
автоматически.
------- Comment #11 From 2007-02-04 21:55:19 -------
(From update of attachment 1766 [details])
Такое изменение в spec больше не нужно - достаточно BuildPreReq: dietlibc >=
0.30-alt3 (независимо от архитектуры ).
------- Comment #12 From 2007-02-27 11:43:09 -------
Subject: Re: [sisyphus] Master upgrade - part 3 (after reboot)
From: Sergey Vlasov <vsu@altlinux.ru>
To: sisyphus@lists.altlinux.org
Date: Fri, 23 Feb 2007 14:55:10 +0300

On Fri, Feb 23, 2007 at 12:30:44PM +0300, Alexander Volkov wrote:
> Вот пришлось перезагрузиться вчера - а и не поднимаемся автоматом!
> Падает в ремонтную систему на:
> starting up raid: (using mdassemble) ... raidstart line 34: Segmentation
> fault "$f"

В пакете mdadm-2.6-alt2 ещё с прошлого года сломан mdassemble:
https://bugzilla.altlinux.org/show_bug.cgi?id=10357
Для устранения этой проблемы достаточно пересобрать пакет с
dietlibc-0.30-alt3 (либо без использования dietlibc вообще).

Во многих случаях эта проблема не проявляется из-за того, что скрипт
/etc/rc.d/scripts/raidstart предпочитает использовать mdadm в случае
его доступности, и только при отсутствии mdadm вызывает mdassemble.
Однако по каким-то не вполне понятным мне причинам mdadm сейчас
располагается не в /sbin, а в /usr/sbin, в результате конфигурации с
/usr на отдельном разделе нормально не работают.
-----------
/usr именно что отдельно.
я положил mdadm в /sbin и поднялся...
------- Comment #13 From 2007-03-03 20:34:16 -------
Багу закрываю.

Поскольку теперь рядом с gcc4.1 в Сизифе лежит
свежая версия dietlibc-0.30-alt2, собранная с -fno-stack-protector,
а в предыдущих дистрибутивах рядом со старой dietlibc лежит gcc3,
то теперь везде присутствует непротиворечивая комбинация пакетов :)

Кроме того, начиная с mdadm-2.6.1, сборка кладёт mdadm в /sbin,
то есть перестанет mdassemble вызываться, если /usr на отдельном разделе.
------- Comment #14 From 2007-03-06 00:32:32 -------
mdassemble работает.