Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Jan 2000 01:58:02 +0200
From:      Iani Brankov <ian@bulinfo.net>
To:        hackers@freebsd.org
Subject:   The stack size for a process?
Message-ID:  <3883AC8A.7A6F7D5F@bulinfo.net>

next in thread | raw e-mail | index | archive | help
Hi,

after making world of a CURRENT cvsupped yesterday, one of my
applications stopped working because of a Segmentation fault.

The C procedure where the problem pops has about 64k local variables.
here's the assembly output of the procedure's beginning:

0x805bb60 <transaction_read_objects>:   pushl  %ebp
0x805bb61 <transaction_read_objects+1>: movl   %esp,%ebp
0x805bb63 <transaction_read_objects+3>: subl   $0x1000c,%esp
0x805bb69 <transaction_read_objects+9>: pushl  %edi


The Segmentation fault happens when the process tries to push %edi in
the stack, which has been just decreased by 0x1000c.

here's the stack in the beginning of main():
esp            0xbfbfd744
ss             0x27

and after the fault:
esp            0xbfacae68
ss             0x27

If I decrease the size of the local vars, it goes ok.

It's interesting, because I made a simple test using 640k local vars,
and it worked!

void ab() {
        char buf[655360];
        buf[0] = 0;
	buff[655359] = 0;
}

main () {
        ab();
}


--iani


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3883AC8A.7A6F7D5F>