Also, the commercial DX 3.1.4B did not support SMP on then DEC now Compaq Alpha machines. It was only supported on AIX, IRIX and Solaris. There was a beta version in 1998, but it was not widely available. It's been a while since I used an alpha machine (with that old version). But I vaguely recall either telling DX not to use shared memory or rebuilding the unix kernel to change the shared memory segments (number and size).
If Mike Zeleznick is tuning in, perhaps he could add some useful comments. Gregory D Abram/Watson/[EMAIL PROTECTED]@opendx.watson.ibm.com on 03/08/2001 03:59:51 PM Please respond to [email protected] Sent by: [EMAIL PROTECTED] To: [email protected] cc: Subject: Re: [opendx-users] cannot attach shared memory segment (I think I might have missed a reply here... sorry if this is redundant) It looks like your system has a limit of 64 shared memory segments, and its thinking that the max segment size is 4Meg - so its taking 100 segments to get 400 meg total. DX 3.1.4 must be using a different default, and the right number must be at least 400/64 if 3.1.4 works. The offending code is in src/exec/libdx/mem.c. It looks to see if SHMMAX is defined, and if not, sets it to 256M. It allows this to be overriden by the DXSHMEMSEGMAX env variable. So one of two things is happening - either its picking up a bad value for SHMEM from somewhere in your system includes, or somewhere, DXSHMEMSEGMAX is getting set. You can see if DXSHMEMSEGMAX is assigned a value anywhere by creating a little shell file foo: #! /bin/sh echo DXSHMEMSEGMAX is $DXSHMEMSEGMAX Then set the shell file to executable (chmod a+x foo), and dx -exec ./foo -script You're fooling it into thinking that foo is a valid dxexec, and what it prints will tell you whether the env var is set when the dx script finally gets around to calling dxexec - where the problem is. I'd guess if you set an environment variable DXSHMEMSEGMAX to 8 it'll work - you'll need only 50 segments. Of course, the right anwer is to figure out what the correct max segment size on your system is. Unless its getting overridden somewhere by the dx scripts, and the above test should show you that. Hope this helps. Probably the biggest single difference between 3.1.4 and OpenDX is that OpenDX uses the GNU automatic configuration stuff, rather than the hand-made configuration we used when we released binaries from IBM. So its always possible that the configuration - eg. the include files it uses - differ between the two. Greg "Betsy Foote" <[EMAIL PROTECTED]>@opendx.watson.ibm.com on 03/08/2001 03:04:47 PM Please respond to [email protected] Sent by: [EMAIL PROTECTED] To: [email protected] cc: Subject: Re: [opendx-users] cannot attach shared memory segment I was just able to run version 3.1.4 of dx with the same arguments as below, on the same machine, and was able to start up dx successfully. So there appears to be some difference between 3.1.4 and 4.1 for this case. Any ideas? Betsy >I'm running OpenDX on an 8 processor Compaq AlphaServer with 8GB of >shared memory. When I start up dx with: > > dx -memory 400 -program junk.net > >I get the following error message. > >Connection to server east failed: >Starting DX executive >Error during Initialization >cannot attach shared memory segment/failed on segment 65 of 100 needed >segments/last call to shmat returned errno=24 >cannot initialize DX library > >Although I cannot try it out anymore, I believe this used to work with >version 3.1.4. > >Any ideas as to what is going on and how to be able to use 400M of >memory? > >Thanks, > >Betsy
