community.borland.com

Article #25155: Error Message: statement failed -902 operating system directive semget failed.

Problem:
Inserting/updating record A (field length (10) with a value from 
 record B (field length (60)) results in a string truncation error.
Inserting/updating record A (field length (10) with a value from 
 record B (field length (60)) results in a string truncation error.
Inserting/updating record A (field length (10) with a value from 
 record B (field length (60)) results in a string truncation error.



Solution:
Example:  (default)
	
		#V4_LOCK_MEM_SIZE	98304
		#ANY_LOCK_MEM_SIZE	98304
		#V4_LOCK_SEM_COUNT	32
		#ANY_LOCK_SEM_COUNT	32
		#V4_LOCK_SIGNAL		16	
		#ANY_LOCK_SIGNAL	16
		#V4_EVENT_MEM_SIZE	32768
		#ANY_EVENT_MEM_SIZE	32768

	In the case that I generated this document from the customer had
	originally received shared memory errors.  Upon increasing the amount
	allocated by InterBase he then cause this problem by increasing the
	semephores at the same time.  He made the following edits to the 
	isc_config file.
	
		V4_LOCK_MEM_SIZE        196608
		V4_LOCK_SEM_COUNT	96
		
	He did try to reconfigure the kernel as well to fix this problem but
	actually worsened the situation.  What he did was to tweak the
	 number on system semephore as follows:
	
		60 (default on the system he is using)
		--      ---
                25 (default that InterBase uses on his system, SCO)
                ==
                35 (left over)
                
        He reconfigured it to 120.
        
        	120 (new setting in kernel SEMMNS parameter)
        	---
        	96  (new setting in isc_config file - V4_LOCK_SEM_COUNT)
        	===
        	24  (left over = LESS than before)
        	
        How to fix: (general)
        
        	A general rule of thumb is to increase system available 
        	semaphore by 50% each time until the problem goes away.

Last Modified: 29-SEP-00