Sida 1 av 1

grep ger segmenteringsfel

Postat: 15 feb 2009, 23:10
av TicToc
Någon som kan förklara varför jag får segmenteringsfel med -f men inte med while? Problemet uppstår när jag begränsar med -m.

Kod: Markera allt

exec < $STRINGS
while read msg
do
  grep -m 1 -A 2 "$msg" "$PO"
done

Kod: Markera allt

grep -m 1 -A 2 -f "$STRINGS" "$PO"

Re: grep ger segmenteringsfel

Postat: 16 feb 2009, 11:53
av Lars
Segmenteringsfel ska man aldrig få, så det är definitivt en bugg. Gör en backtrace och skicka till Launchpad. Det kan också vara bra att skicka med en minimalt exempel med indatafiler som utlöser buggen.

Re: grep ger segmenteringsfel

Postat: 16 feb 2009, 12:46
av Osprey
Precis, segmenteringsfel kommer sig oftast av att man försökt komma åt ett minnesutrymme som man inte har tillgång till, att man typ har försökt göra division med noll eller något annat som felhanteringen i programmet borde tagit hand. Om programmet/kommandot saknar felhantering för situationen i fråga och man istället utför det som borde gallrats bort och felhanterats, så får man ett segmenteringsfel.

Detta är normalt bara något man råkar ut för när man själv sitter och kodar och utvecklar ett program, men när programmet är färdigt ska alla sådana luckor vara igentäppta.

Hur som helst så är det så att det sannolikt är ett fel som ligger bakom, men alltså att grep inte hanterar det så som det borde. Du borde fått en felutskrift som talade om att med givna förutsättningar och de parametrar du givit så blir det fel...

Re: grep ger segmenteringsfel

Postat: 16 feb 2009, 14:16
av andol
Hojta till när du har rapporterat buggen, så ska vi se om inte jag (eller någon annan) kan bekräfta den åt dig.

Precis som Lars säger är det bra att ta med instruktionerna som gör det lätt för andra att reproducera buggen.

Re: grep ger segmenteringsfel

Postat: 17 feb 2009, 18:44
av TicToc
Har nu testat lite olika saker och kommit fram till att det funkar bra på min ubuntumaskin, som kör grep 2.5.3, problemet uppstår bara i Pardus med grep 2.5.1. Buggrapport blir det, men LP är nog fel ställe... :D

Tack.