2004-03-05 21:01:42

by Stuart Hayes

[permalink] [raw]
Subject: ACPI stack overflow


Hello...

I think I am getting a stack overflow when Linux is parsing the ACPI tables (initializing all the devices and running all the _STA methods). I am using the x86_64 architecture. I would like to try increasing the kernel stack size, but I'm not sure how to go about doing this. Could someone tell me how to increase the kernel stack size? (And, has anyone else seen a problem with stack overflows with ACPI?)

Thanks!
Stuart
[email protected]



2004-03-05 21:48:44

by Richard B. Johnson

[permalink] [raw]
Subject: Re: ACPI stack overflow

On Fri, 5 Mar 2004 [email protected] wrote:

>
> Hello...
>
> I think I am getting a stack overflow when Linux is parsing the ACPI
> tables (initializing all the devices and running all the _STA methods).
> I am using the x86_64 architecture. I would like to try increasing the
> kernel stack size, but I'm not sure how to go about doing this.
> Could someone tell me how to increase the kernel stack size?
> (And, has anyone else seen a problem with stack overflows with ACPI?)
>

Please fix your mailer. In Unix/Linux, we put in a [Enter] ('\n')
every once in awhile, usually every 79 charcters so that a line
of text does not exceed 80 characters. We do not let some indefinite
screen "auto-wrap".

> Thanks!
> Stuart
> [email protected]

There have been continual changes over the years to reduce the
amount of kernel stack that the kernel uses because kernel stack-
space is "expensive". It needs to be changed in pages. I think
that if you have a stack-overflow, then you are writing poor
kernel code. In the kernel, do not put arrays on the stack, i.e,
in "local" space. Use kmalloc()/kfree() instead.

Basically, do not increase the stack size. It just masks problems.
It does not make them go away. If you need more stack, you
are doing something wrong.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.24 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.


2004-03-05 22:35:29

by Chris Wedgwood

[permalink] [raw]
Subject: Re: ACPI stack overflow

On Fri, Mar 05, 2004 at 03:01:34PM -0600, [email protected] wrote:

> I think I am getting a stack overflow when Linux is parsing the ACPI
> tables (initializing all the devices and running all the _STA
> methods). I am using the x86_64 architecture. I would like to try
> increasing the kernel stack size, but I'm not sure how to go about
> doing this. Could someone tell me how to increase the kernel stack
> size? (And, has anyone else seen a problem with stack overflows
> with ACPI?)

Please find the source of the stack overflow and fix that. Increasing
the kernel stack size is not a suitable solution.


--cw

2004-03-05 22:38:55

by Stuart Hayes

[permalink] [raw]
Subject: RE: ACPI stack overflow

Richard B. Johnson wrote:
> On Fri, 5 Mar 2004 [email protected] wrote:
>
>>
>> Hello...
>>
>> I think I am getting a stack overflow when Linux is parsing the ACPI
>> tables (initializing all the devices and running all the _STA
>> methods). I am using the x86_64 architecture. I would like to try
>> increasing the kernel stack size, but I'm not sure how to go about
>> doing this.
>> Could someone tell me how to increase the kernel stack size?
>> (And, has anyone else seen a problem with stack overflows with ACPI?)
>>
>
> Please fix your mailer. In Unix/Linux, we put in a [Enter] ('\n')
> every once in awhile, usually every 79 charcters so that a line
> of text does not exceed 80 characters. We do not let some indefinite
> screen "auto-wrap".
>
>> Thanks!
>> Stuart
>> [email protected]
>
> There have been continual changes over the years to reduce the
> amount of kernel stack that the kernel uses because kernel stack-
> space is "expensive". It needs to be changed in pages. I think
> that if you have a stack-overflow, then you are writing poor
> kernel code. In the kernel, do not put arrays on the stack, i.e,
> in "local" space. Use kmalloc()/kfree() instead.
>
> Basically, do not increase the stack size. It just masks problems.
> It does not make them go away. If you need more stack, you
> are doing something wrong.
>
> Cheers,
> Dick Johnson
> Penguin : Linux version 2.4.24 on an i686 machine (797.90 BogoMips).
> Note 96.31% of all statistics are fiction.

Thanks. Unfortunately, it isn't my code that's using so much stack
space--it's the ACPI "driver". It has many deep nested calls, and
I believe each call in x86_64 is taking more stack space than it would
in i386 because of the larger registers. But, what I really wanted
to do is increase the kernel size to verify that the problem is a
stack overflow (my other tests have led me to believe so). I wasn't
going to propose that as a solution.

Thanks!
Stuart

2004-03-05 23:13:10

by Andi Kleen

[permalink] [raw]
Subject: Re: ACPI stack overflow

[email protected] writes:

> Hello...
>
> I think I am getting a stack overflow when Linux is parsing the ACPI tables (initializing all the devices and running all the _STA methods). I am using the x86_64 architecture. I would like to try increasing the kernel stack size, but I'm not sure how to go about doing this. Could someone tell me how to increase the kernel stack size? (And, has anyone else seen a problem with stack overflows with ACPI?)

Increasing THREAD_ORDER to 2 in include/asm-x86_64/page.h should do
the trick in theory (not tested). There is also an old 2.4 exact stack
overflow checking patch at ftp://ftp.x86-64.org/pub/linux/debug/stackcheck-1
that could be probably ported to newer kernels.

I haven't heard of ACPI stack overflows before.

-Andi