Problem Note 39621: Floating point exception in SAS program using hash table
Abnormal termination when too much memory specified for hash table program.
ERROR: An unknown, abnormal error has occurred during execution at
line n column xx.
ERROR: Termination due to Floating Point Exception
Explanation:
When running on a 64-bit machine, the default MEMSIZE option allows SAS to take up all real and virtual memory. This can be verified by running the following statement:
proc options option=memsize value; run;
Hash tables have a known defect that causes SAS to issue the abnormal error message when the amount of memory overflows a 32 bit address.
A fix is planned for a future release.
Workaround
Reduce the amount of memory specified to 8G.
MEMSIZE System Option: Windows
MEMSIZE System Option: UNIX
Operating System and Release Information
SAS System | N/A | Microsoft® Windows® for 64-Bit Itanium-based Systems | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft Windows Server 2003 Datacenter 64-bit Edition | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft Windows Server 2003 Enterprise 64-bit Edition | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft Windows XP 64-bit Edition | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft® Windows® for x64 | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft Windows Server 2003 for x64 | 9.2 TS2M2 | 9.3 TS1M0 |
Microsoft Windows Server 2008 for x64 | 9.2 TS2M2 | 9.3 TS1M0 |
Windows Vista for x64 | 9.2 TS2M2 | 9.3 TS1M0 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
The sample code below can be used to verify the MEMSIZE option is set correctly.
If MEMSIZE is too large, this program produces an error.
If it runs without error, hash tables perform correctly.
data A;
x=1; y=2;
run;
data B;
x=1; z=2;
run;
data match;
length x y z 8;
if _N_= 1 then do;
declare hash h(dataset: "A", ordered: 'no', hashexp:14);
declare hiter iter('h');
h.defineKey('x');
h.defineData('y');
h.defineDone();
call missing(x,y);
end;
set B;
if (h.find() eq 0) then output;
run;
Error message occurs when run in SAS 9.2, no error in SAS 9.1.3
Type: | Problem Note |
Priority: | medium |
Topic: | SAS Reference ==> Component Objects ==> hash object
|
Date Modified: | 2011-06-08 14:18:09 |
Date Created: | 2010-05-12 16:49:42 |