[Prev][Next][Index][Thread]
E/L 1.99n memory growth potential workaround
Hi Folks,
The workaround's at the end; if you're not curious as to the cause of
the problem and just want the fix, skip to the bottom.
Thanks to Steve Wormley, I have a handle on what's causing the memory
growth under Executor/Linux 1.99n. Under UNIX filesystems, you need a
path (either from / or from your current directory) to look up a file.
On a Mac, you need only a directory number and a filename. We do a
bunch of magic to be able to give Mac programs that (number,filename)
lookup capability.
Internally we have to be able to change a directory number into a
path. The way we do this is keep track of all directories we ever see
and then remember the name of the directory's parent. Then we can
recursively climb back up to / to build a complete pathname.
HOWEVER, it appears that there are a couple problems. One, there's no
detection of loops in our recursive call, so if our internal database
is confused, the routine that does the name resolution will repeatedly
call itself forever and ever, eating up memory. I will fix this later
today. In addition, when you install Executor over itself, you run
the risk of confusing the database.
I *think* this will fix the problem, but the code that potentially
recurses forever will still be there, so please let me know if it gets
triggered again. Basically you want to truncate *.dir and *.pag in
the Executor library directory (probably /usr/local/lib). Here's an
example, with comments on lines starting with #:
beaut 4.14 su
Password:
# You don't necessarily need to be Super-User to do this, but you'll
# want to be if the permissions on those files aren't set right
beaut:/# cd /usr/local/lib/executor
beaut:/usr/local/lib/executor# ls -l
total 72
drwxrwxrwx 2 ctm ardi 1024 Jul 4 10:48 Configuration
-rw-rw-rw- 2 ctm ardi 36864 Jul 5 21:32 DirectoryMap-le.dir
-rw-rw-rw- 2 ctm ardi 36864 Jul 5 21:32 DirectoryMap-le.pag
-rw-rw-rw- 1 ctm ardi 0 Nov 9 1994 DirectoryMap.dir
-rw-rw-rw- 1 ctm ardi 0 Nov 9 1994 DirectoryMap.pag
drwxr-xr-x 6 ctm ardi 1024 Jul 4 08:05 ExecutorVolume
# There are only two files that need to be truncated, but I'll
# truncate each one for illustrative purposes
beaut:/usr/local/lib/executor# cat /dev/null > DirectoryMap-le.dir
beaut:/usr/local/lib/executor# cat /dev/null > DirectoryMap-le.pag
beaut:/usr/local/lib/executor# cat /dev/null > DirectoryMap.dir
beaut:/usr/local/lib/executor# cat /dev/null > DirectoryMap.pag
# done
# alternatively you could have used
# for f in *.dir *.pag; do > $f; done
beaut:/usr/local/lib/executor# chmod a=rw *.dir *.pag
# I really didn't need to reset the permissions here, but it
# is important that these files are readable and writable by any
# potential Executor user
If there is anyone who continues to have problems after doing this,
please let us know.
Because of E/D 1.99n's inability to run under OS/2 and this bug, We'll
continue to collect 1.99n bug reports and may release a 1.99o without
any new functionality but with these (and perhaps other) showstoppers
fixed.
--Cliff
ctm@ardi.com