Bug 10357

Summary: mdassemble crashes
Product: Sisyphus Reporter: Sergey Bolshakov <sbolshakov>
Component: mdadmAssignee: evseev <evseev>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P2 CC: mike, shaba, thresh, vitty, vsu
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
mdadm.conf
none
mdadm-2.6-alt2.1.src.rpm.diff
none
Fixup from evseev@ (also fixes #10727 and cleanups patchset) none

Description Sergey Bolshakov 2006-12-02 16:04:43 MSK
mdadm-2.5.6-alt1:

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

# 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 evseev 2007-01-22 17:32:55 MSK
Сейчас в Сизиф ушла сборка 2.6-alt1.
В ней этот баг остался?
Comment 4 Sergey Bolshakov 2007-01-27 14:03:33 MSK
2.6-alt2, падает, как и раньше.
у меня raid1 на двух дисках целиком, если это важно.
Comment 5 Sergey Vlasov 2007-01-28 18:24:51 MSK
Created attachment 1766 [details]
mdadm-2.6-alt2.1.src.rpm.diff

Это несовместимость текущего релиза dietlibc с реализацией -fstack-protector в
текущей версии gcc4.1, которая там включена по умолчанию.  Обходится сборкой с
-fno-stack-protector.
Comment 6 evseev 2007-01-29 02:33:32 MSK
Не совсем понятно, зачем в 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 evseev 2007-01-29 02:41:39 MSK
Created attachment 1767 [details]
Fixup from evseev@ (also fixes #10727 and cleanups patchset)
Comment 8 Sergey Vlasov 2007-01-29 12:38:04 MSK
(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 evseev 2007-02-01 04:44:42 MSK
(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 Sergey Vlasov 2007-02-04 21:53:54 MSK
В dietlibc-0.30-alt3 проблема устранена правильным способом - теперь для сборки
достаточно использовать CC='diet gcc', опция -fno-stack-protector добавляется
автоматически.
Comment 11 Sergey Vlasov 2007-02-04 21:55:19 MSK
Comment on attachment 1766 [details]
mdadm-2.6-alt2.1.src.rpm.diff

Такое изменение в spec больше не нужно - достаточно BuildPreReq: dietlibc >=
0.30-alt3 (независимо от архитектуры ).
Comment 12 Alexander Volkov 2007-02-27 11:43:09 MSK
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 evseev 2007-03-03 20:34:16 MSK
Багу закрываю.

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

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