apollo@ecf.utoronto.ca (Vince Pugliese) (01/04/90)
one of the guys is developing a fairly large program and has been experiencing some problems. - running a FORTRAN program with large data memory requirements > 5Mb ram - what does the following error mean ? `` unable to unwind stack because of invalid stack frame (process manager/process fault manager) '' - is there any specific limits on memory usage with fortran ? - it was suggested that using the ``-save'' option with the compiler might help, in fact it seemed to make things WORSE! any ideas?? suggestions?? thanks in advance vince apollo@ecf.toronto.edu
krowitz%richter@UMIX.CC.UMICH.EDU (David Krowitz) (01/04/90)
We write programs larger than 5MB all the time (actually, most of the time!). The only limits are: 1) The virtual memory address space of your particular model of workstation. All Apollo nodes have at least 64MB of address space. Older DN3000 (prior to the DN3000 model 3010) were limited to 64MB; later model DN3000's (model 3010 and 3010A) have a larger address space (256MB, I think); and DN4000's, DN3500's and DN4500's have something like 1GB or more. 2) The amount of free disk space on the node (or, if it is a diskless machine, it's partner's free disk space). There has to be at least enough free disk space to equal the amount of virtual memory (ie. the total size of all the arrays, variables, code, and I/O buffers) used by your program. Under SR9.7, the disk space was allocated as your program began to use it (ie. disk space for a particular array wasn't allocated until you first began to use the array). Under SR10, the entire amount of disk space is allocated as soon as the program is started. This guarantees that the program will not die from running out of disk space after hours of work. If you *need* to use SR9.7 style disk allocation, there is a rumor of an unsupported option to the SR10 binder (/com/bind) that will allow you to do this. 3) The size of the stack. The stack is part of a program's virtual memory will is used for the temporary storage of variables and subroutine call/return arguments. On Motorola 680x0 machines, the default stack size is something like 256Kb (or maybe 500Kb, I'm not so certain on this), and on PRISM machines (the DN10000) it's 5Mb. You can change the stack size with a switch to the binder. Fortran subroutines and functions allocate all of their variables and arrays, except for those passed in the subroutine call, those declared as COMMON, or those which are declared in a SAVE statement, in the stack array. When the subroutine/function returns, the stack space is reclaimed and can be used by the next subroutine/function call. The space used on the stack by a subroutine for its variables and the call/return information is a "stack frame". You can damage a subroutine's stack frame by over writing the bounds of an array, by passing subroutine arguments whose size does not match the expected size in the subroutine (or by passing too many or too few arguments), by accessing data via an invalid pointer, etc. -- David Krowitz krowitz@richter.mit.edu (18.83.0.109) krowitz%richter.mit.edu@eddie.mit.edu krowitz%richter.mit.edu@mitvma.bitnet (in order of decreasing preference)
lampi@pnet02.gryphon.com (Michael Lampi) (01/05/90)
There are no specific limits on memory usage with FORTRAN. I suspect that an error in array referencing is destroying your stack frame. Check your code where you set arrayname(index) = value, as opposed to just reading a value from an array. Michael Lampi MDL Corporation 213/782-7888 fax 213/782-7927 UUCP: {ames!elroy, <routing site>}!gryphon!pnet02!lampi INET: lampi@pnet02.gryphon.com "My opinions are that of my corporation!"
lori@hacgate.scg.hac.com (Lori Barfield) (01/05/90)
In article <1990Jan3.212803.23896@ecf.utoronto.ca> apollo@ecf.utoronto.ca (Vince Pugliese) writes: >- running a FORTRAN program with large data memory requirements > 5Mb ram >- what does the following error mean ? > `` unable to unwind stack because of invalid stack frame I hope these suggestions aren't too simplistic, but before we cry BUG here....Has your hacker 1) made sure all his modules are freshly compiled; and 2) double-checked big-array equivalence alignments? A framing error could arise from subroutine declarations being out of kilter, or arrays attempting to wander around your operating system. You know the old FORTRAN saying: "If all else fails, Throw It In Common." ...lori
max@bnr-rsc.UUCP (Max Feil) (01/11/90)
In article <1990Jan3.212803.23896@ecf.utoronto.ca> apollo@ecf.utoronto.ca (Vince Pugliese) writes: > >- what does the following error mean ? > > `` unable to unwind stack because of invalid stack frame > (process manager/process fault manager) '' > This may be too late, or too obvious, but if you haven't solved your problem, make sure that all subroutine/function calls are using the correct number of parameters. This will cause non-stack memory to be interpreted as stack. -- Max Feil Usenet: max@bnr-rsc.UUCP or uunet!bnrgate!bnr-rsc!max Bell-Northern Research Internet: bnr-vpa!bnr-rsc!max@gpu.utcs.toronto.edu P.O Box 3511 Station C, Ottawa, Ontario, Canada K1Y 4H7. (613) 763-3093