Subject: Re: Bus error - simple (?) C program
To: Claude Marinier <claude.marinier@dreo.dnd.ca>
From: Mike Cheponis <mac@Wireless.Com>
List: netbsd-help
Date: 09/10/2001 12:12:51
I tried a variation of that program, making the array a global:
/*
* Test program with a big matrix.
*/
#include <stdio.h>
#include <stdlib.h>
#define N 10000
float matrix[N][N];
int main( void )
{
int i;
printf( "Big Matrix\n\n" );
printf( "The matrix is %d by %d; it has %d elements.\n", N, N, N*N );
printf( "It uses %d bytes.\n", sizeof(matrix) );
for ( i = 0; i < N; i++ ) {
matrix[i][i] = (float)random();
}
printf( "\n" );
printf( "The last element of the matrix if %12.10f\n", matrix[N-1][N-1] );
printf( "\n" );
return 0;
}
And did this:
$ ulimit -m 500000
$ ulimit -d 999999
$ ulimit -a
cpu time (seconds) unlimited
file size (blocks) unlimited
data seg size (kbytes) 999999
stack size (kbytes) 2048
core file size (blocks) unlimited
resident set size (kbytes) 500000
locked-in-memory size (kb) 168716
processes 80
file descriptors 64
S>dmesg|head
NetBSD 1.5.2 (GENERIC) #0: Mon Aug 20 11:14:38 PDT 2001
cpu0: AMD Athlon Model 4 (Thunderbird) (686-class), 1100.12 MHz
total memory = 511 MB
avail memory = 468 MB
using 6574 buffers containing 26296 KB of memory
$ cc matrix.c -o matrix
$ time ./matrix
Big Matrix
The matrix is 10000 by 10000; it has 100000000 elements.
It uses 400000000 bytes.
zsh: bus error (core dumped) ./matrix
./matrix 0.00s user 3.18s system 22% cpu 14.350 total
$ ll matrix.core
1398752 -rw------- 1 mac wheel 400,187,704 Sep 10 12:01 matrix.core
So I'm confused, I have plenty of memory, I increased the limits, and it
still craps out.
Thanks -Mike