DOCUMENT #687
=======================================================================
TROUBLESHOOT MEMORY ERRORS
=======================================================================
PRODUCT: R:BASE VERSION : 3.1 or Higher
=======================================================================
CATALOG: Database Design, AREA : Memory Management
Structure & Integrity
=======================================================================
Each day computers grow more powerful and more complex. It is not
unusual for machines to have modems, fax boards, extra large monitors,
disk compression utilities, scanners, CD ROM drives, virus detection
software etc. Each of these adds complexity to the computer system and
requires a driver and/or additional software to operate. In addition,
many machines use Windows or other multi-tasking programs.
As systems become more complex, products share the same resources
(memory and CPU ) and must be able to interact together. As more
products are run concurrently, however, chances of conflict or incom-
patibility increase dramatically. For example, loading QEMM386,
Windows and then R:BASE 4.0 loads 3 levels of memory managers that
must work together.
A memory error message may come from one product, but actually be
caused by other software or hardware. The error message itself does
not always indicate where the problem lies. The approach to solving
memory related errors is the same: regardless of the error, follow a
step-by-step process of reduction and elimination. As you reduce the
levels of complexity and interaction and remove elements from your
system (temporarily) one-by-one, you're likely to pinpoint the command
or program causing the error.
R:BASE Memory Errors
====================
There are a number of errors R:BASE returns that indicate a problem
with memory, either not enough memory or a conflict in addressing an
area in memory. The following error messages are the most common:
"Insufficient memory to load protected mode R:BASE" (386/486
version only)
"Cannot find protected mode R:BASE files in current directory or
path." (386/486 version only)
"Fatal error: evm0009: EMM error: error = 81, function = 4732"
(286 version only)
"Out of dynamic memory"
"Out of dynamic space"
"Insufficient memory to continue this function"
"Insufficient buffer space to process expressions"
"Insufficient space to process "
Use the following step-by-step process to resolve the error.
Steps to Resolving Memory Errors
================================
1. Verify that you are using the most current version of the software.
A new version may even be sitting on the shelf uninstalled. Old
software is not always compatible with a new computer and vice
versa, new software is not always compatible with an old computer.
Many companies do in-line releases. Call the vendor to verify that
you have the most current release or to find out how to get it.
2. Check the documentation. In particular, look through the README
files for all software you are loading and any hardware that has
been added to the machine. The README files often have reference to
known software or hardware incompatibilities, or identify settings
or drivers that need to be loaded for particular environments.
3. Make sure there is enough available memory. R:BASE 4.0 (386/486
version) requires a minimum of 2.5 Mb (2,560,000 bytes) of available
extended or expanded memory. To check available memory use the DOS
MEM command. Execute MEM immediately after booting your machine.
Following is output from a MEM command on a machine with 6Mb total
RAM, HIMEM.SYS, 512Kb SMARTDRV cache and DOS 5.0 loaded high.
655360 bytes total conventional memory
655360 bytes available to MS-DOS
565744 largest executable program size
(available conventional memory)
5505024 bytes total contiguous extended memory
(total extended memory)
0 bytes available contiguous extended memory
4721664 bytes available XMS memory
(available extended memory)
MS-DOS resident in High Memory Area
HIMEM.SYS is an extended memory manager and no memory is being used
as expanded. If an expanded memory manager is used instead, the
output from MEM may look like this:
655360 bytes total conventional memory
655360 bytes available to MS-DOS
565744 largest executable program size
(available conventional memory)
5505024 bytes total EMS memory
4721664 bytes free EMS memory
(available expanded memory)
5505024 bytes total contiguous extended memory
(total extended memory)
0 bytes available contiguous extended memory
4721664 bytes available XMS memory
MS-DOS resident in High Memory Area
Notice that available extended memory (XMS) and available expanded
memory (EMS) are the same amount. This is because all the memory is
being used as one pool, either extended or expanded, depending on the
software requesting memory. Third party memory managers provide the
ability to divide memory into two separate pools, one extended and
one expanded. When your memory is split into two pools, the MEM
command will show different numbers for available extended memory
(XMS) and available expanded memory (EMS). If your memory is split
into both extended and expanded, try allocating it as extended only.
By default, R:BASE 4.0 attempts to use all available extended memory
as it executes. Try the DOS16M parameters as specified in the
MEMORY.TXT file to restrict the amount of extended memory that
R:BASE 4.0 will use. This option is available to machines with at
least 6Mb total memory.
CodeLock and Gateway (Import/export) require 465 Kb of available
conventional memory.
R:BASE 4.0 (286 version) requires 465 Kb (476,160 bytes) of available
conventional memory. The MEM command shows available conventional
memory, or you can use the DOS CHKDSK command.
The CHKDSK command shows available conventional memory only. It does
not give information about extended or expanded memory. In addition,
it gives information about available disk space. The very last line
of the CHKDSK output shows the amount of available conventional
memory. Below is the CHKDSK output using DOS 5.0.
86827008 bytes total disk space
12288 bytes in 6 hidden files
262144 bytes in 118 directories
81917952 bytes in 2162 user files
4546560 bytes available on disk
2048 bytes in each allocation unit
42396 total allocation units on disk
2220 available allocation units on disk
655360 total bytes memory
565744 bytes free
(available conventional memory)
In the 286 version, extended or expanded memory is used for code
swapping only, not for execution. It executes in conventional memory
only, but there can still be memory conflicts. If you get EVM error
messages when starting the 286 version, turn off use of extended
and/or expanded memory by R:BASE. There are two DOS SET parameters
that control this (other programs are not affected by these
settings). The SET command is entered at the DOS prompt. Be sure
there are no spaces around the equal sign (=). Try turning off one
section of memory at a time.
SET RTVMEXP=0% -- turns off use of expanded memory by R:BASE
SET RTVMEXT=0% -- turns off use of extended memory by R:BASE
Memory conflicts with the 286 version are most often caused by a
conflict with another software program. Also try Step 5 below.
4. Start R:BASE from the operating system prompt, not from within a
menuing system or multi-tasking program such as Windows or DESQview.
Start R:BASE from the R:BASE program files directory (usually
RBFILES). This eliminates any conflict with other programs or
versions of R:BASE on the path. R:BASE always looks first for files
in the current directory.
Additional information on running the 286 version of R:BASE under
Windows is in the Installation Guide. The PIF file settings which
may require changes are Memory requirements, EMS memory and XMS
memory. Below are two different configurations that work under
Windows with the 286 version and HIMEM.SYS. If using an expanded
memory manager you need to specify EMS memory rather than XMS
memory. Some situations require both. Configuring non-Windows
applications for Windows is a process of trial and error.
Memory requirements Memory requirements
------------------- -------------------
KB required -1 KB required 420
KB desired -1 KB desired 640
EMS memory EMS memory
KB required 0 KB required 0
KB desired 0 KB desired 0
XMS memory XMS memory
KB required 1024 KB required 0
KB desired 2048 KB desired 1024
With the 386/486 version of R:BASE the situation becomes more
complex. You now have a 32-bit protected mode program (R:BASE)
running under a 16-bit protected mode program (Windows). Both have
their own memory manager and a third memory manager is often speci-
fied in the CONFIG.SYS file. It's easy to see how with 3 levels of
memory management trying to coexist there may be some conflicts.
Information and tips on running the 386/486 version of R:BASE under
Windows is included in the README.TXT file. As with the 286 version,
it is often a long process of trial and error.
There are some machine configurations that do not seem able to
run the 386/486 version under Windows. The best solution in this
instance is to run the 286 version under Windows. You have the same
features and functionality as the 386/486 version but different
memory management and performance.
For information on running with other multi-tasking software,
contact the vendor of your multi-tasking software.
5. Remove any possible interference or interaction with other
software by going to a "clean" configuration. This means starting
your computer with CONFIG.SYS and AUTOEXEC.BAT files containing
only elements that are absolutely required to start your computer.
For example, a hard disk driver is required, a network driver or
disk cache is not. Most people can go to a configuration such as:
CONFIG.SYS file:
FILES=20
BUFFERS=16
AUTOEXEC.BAT file:
PROMPT $P$G
PATH=C:\;C:\DOS;C:\RBFILES
Note that no device drivers or other software programs are loaded.
The 386/486 version of R:BASE 4.0 does not require a memory manager.
The 286 version does not require a memory manager either, but
operates much faster with one present.
Make copies of your original CONFIG.SYS and AUTOEXEC.BAT files
before making any changes.
Retry the operation that failed. If it still fails, then the
hardware may be faulty or the problem may lie in the database or
with the R:BASE program itself. If the problem does not occur,
then there must be something in the CONFIG.SYS or AUTOEXEC.BAT that
is creating a conflict.
6. Add elements back to your CONFIG.SYS and AUTOEXEC.BAT files
one-by-one, restarting your computer and retrying the operation
after each addition. At some point the operation will fail. Having
added elements back one-by-one, you now know exactly which driver
or program is causing a memory conflict with R:BASE.
An easy way to modify the CONFIG.SYS and AUTOEXEC.BAT files is by
putting the word "REM" followed by a space at the beginning of each
line you don't want to execute. This way, elements are "added" and
"deleted" from the files by adding or removing the "REM" at the
beginning of the line. The original lines aren't changed and don't
need to be reentered.
Following are some possible options once the conflicting element has
been identified:
- Remove the item permanently
- Check the documentation for the particular utility or driver,
- including README files
- Try loading drivers in a different order
- Contact the developer of the utility or driver
- Modify the program's parameters
7. Remove hardware devices. If hardware, such as a modem, network card
or scanner card, has recently been added to the machine, remove the
hardware (and drivers) and retry the operation. Replace the hardware
one item at a time, retrying the operation after each addition.
8. Determine if the problem is related to a specific database. Try the
operation on a different database. Use the sample database, CONCOMP,
for example. If the same operation fails on the sample database,
then the problem may lie within the R:BASE program. Contact Microrim
Technical Support, 206-649-9551. We may be familiar with the problem
and have a workaround. If the problem seems to be related to a
particular database check the following:
- Compare the database settings to the default values or to the
settings in a working database. Some settings are stored in the
database, others are set from the RBASE.CFG file. The settings that
commonly cause problems are BLANK, DELIMIT and NULL which are
stored in the database. The SET entry in the Command Dictionary
section of the Reference Manual has a complete list of settings
stored with the database versus the other settings.
- Use RBCHECK or RSCOPE to check the database for structure and
pointer errors. RBCHECK is a database checking utility that comes
with your R:BASE 3.x or 4.0 product. RSCOPE is a database check and
correction utility that can be purchased from our Sales Department.
To run RBCHECK, from the DOS prompt enter,
RBCHECK dbname * dbname.chk
Results of the check are written to the file dbname.chk.
- There are settings specific to the 286 version that affect memory
usage. You can set a DOS environment variable to increase the size
of the data area used for processing. Try increasing this area if
you get "Out of dynamic space" messages. At the DOS prompt enter,
SET RTVMCONV=640,200
The second number is the size, in Kb, of the data area. You cannot
increase this above the limits of available conventional memory.
In addition, there is the -H startup option which allows
specification of the number of memory handles to use (default is
300).
- Settings specific to the 386/486 version that affect memory usage
are the -Z and -K startup options and SET SORT. By default, the
386/486 does not use conventional memory for processing data, it is
all reserved for other programs accessed through the ZIP command.
The -Z startup switch is used to reserve a specified amount of
conventional memory for other programs, allowing R:BASE to use the
rest. The -K option specifies the size of memory blocks R:BASE will
allocate. SET SORT allows specification of the amount of memory to
use for sorting.
- Use PACK (Pack in place) or RELOAD (Pack to) to rebuild the data
pointers and all indexes in the database.
- Use the BACKUP and RESTORE procedure to rebuild the database
structure and load the data. This is different from PACK and
RELOAD, it completely recreates the database from scratch.
- Check for invalid data in tables, particularly in the SYSINFO
table. The SYSINFO table contains long table and column names,
descriptions and autonumber information. BROWSE * FROM SYSINFO
and look for data that does not belong. Here's what some of the
data from the SYSINFO table in CONCOMP looks like:
first eight column or table numeric precision full column
characters description and scale and table names
of table name | | |
| first eight | autonumber | autonumber |
characters | increment | next value |
| of column name | | | |
syssname syscname sysdescr sysinc sysfmt sysnext syslong
-------- -------- -------- -------- -------- -------- --------
employee emplname Employee -0- -0- -0- -0-
last name
employee empaddre Employee -0- -0- -0- empaddress
home address
employee entrydat Date infor- -0- -0- -0- entrydate
mation entered
transdet Transaction -0- -0- -0- transdetail
details
transdet transid Transaction -0- -0- -0- -0-
id number
transdet detailnu Detail line -0- -0- -0- detailnum
number
customer custid Customer 1. -0- 111 -0-
id number
- Try the operation with MULTI OFF if the database is on a network
file server.
- Try the operation on a different computer.
9. Reinstall the R:BASE program. If all else fails, try reinstalling
the program.
Additional reading about memory
===============================
The Waite Group's Tricks of the MS-DOS Masters
The Waite Group
100 Shoreline Highway, Suite A-285
Mill VAlley, CA 94941
Quarterdeck Manifest
Quarterdeck Office Systems
150 Pico Blvd.
Santa Monica, CA 90405
R:BASE Exchange articles:
"Fine Tuning R:BASE", January/February 1993 (#680)
"Problem Solving with R:BASE", September/October 1992 (#663)
"An Introduction to R:BASE 4.0 and Memory Management", July/August
1992 (#647, #648)
"Finding Your Optimum RTVMCONV - an Empirical Approach", January/
February 1992 (#373)
"How R:BASE Organizes & Manages Memory - Part I", July/August 1991
(#319)
"Run Microrim's R:BASE Under Microsoft Windows", March/April 1991
(#299)
All of the Exchange articles are available from our automated FAX
server, 206-649-2789. The document number is shown in parentheses.
Windows is a registered trademark of Microsoft, Inc. QEMM386,
DESQview, and Quarterdeck Manifest are trademarks of Quarterdeck
Office Systems.