ksymoops deadly slow

Max (max@Linuz.sns.it)
Tue, 2 Feb 1999 23:25:58 +0100 (MET)


I tried to use the ksymoops included in 2.2.1 to get info about some Oopses
I got on my old 486, but it seemed to hang forever after it got the
"Code: <hex numbers>" line.

So I tried it on a faster machine (a 266MHz PII) and it froze for more than
20 seconds, then finally printed the disassembled code and all normal info.

I tracked this down to the following code in Oops_read (oops.c, line 960) :

re_compile(&re_Oops_code,
"^(" /* 1 */
/* sparc */ "(Instruction DUMP)" /* 2 */
/* various */ "|(Code *)" /* 3 */
")"
":[ \t]+"
"(" /* 4 */
"(general protection.*)"
"|(<[0-9]+>)"
"|(([<(]?[0-9a-fA-F]+[>)]?[ \t]*)+)"
")"
"(.*)$" /* trailing garbage */
,
REG_NEWLINE|REG_EXTENDED|REG_ICASE,
&re_Oops_code_pmatch);

i = regexec(&re_Oops_code, line, re_Oops_code.re_nsub+1,
re_Oops_code_pmatch, 0);

The very long freeze happened in the regexec(),
when line == "Code: <hex numbers>"
Thinking a little, I suspect that the regex expression
"|(([<(]?[0-9a-fA-F]+[>)]?[ \t]*)+)" is the guilty one, in particular the part
saying "((<other stuff>[ \t]*)+)" as regexec probably has to recursively check
all the line and choose wether to match or not the "[ \t]*" after each character.

I tried replacing that line with
"|(([0-9a-fA-F]+[ \t]+)+[0-9a-fA-F]+)"
which looked more sane to me, but even though the regexec seemed to return
correctly, I just got a SIGSEGV below in the code.

Can anyone shed some light on this? I hope I will be able to use ksymoops on my
modest 100MHz 486 (which compiles 2.2.1 in 23mins, btw), especially because
this just looks like a stupid typo in the regexp pattern.

Bye,

Massimiliano Ghilardi

----------------------------------------------------------------
| I have yet to meet a person who had a bad experience of Linux. |
| Most have never had an experience. |
----------------------------------------------------------------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/