mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	The problem is that the read and write methods of the shared memory transport (protocol) didn't react to asynchronous close events, which could lead to a lock up as the client would wait (until time out) for a server response that will never come. The solution is to also wait for close events while waiting for I/O from or to the server.
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# We currently only have shm support on windows, so in order
 | 
						|
# to optimize things we skip this test on all other platforms
 | 
						|
--source include/windows.inc
 | 
						|
 | 
						|
# Only run this test if shared memory is avaliable
 | 
						|
let $shm= query_get_value("SHOW VARIABLES LIKE 'shared_memory'", Value, 1);
 | 
						|
if (`SELECT '$shm' != 'ON'`){
 | 
						|
  skip No shm support;
 | 
						|
}
 | 
						|
 | 
						|
# Source select test case
 | 
						|
-- source include/common-tests.inc
 | 
						|
 | 
						|
#
 | 
						|
# Bug #24924: shared-memory-base-name that is too long causes buffer overflow
 | 
						|
#
 | 
						|
--exec $MYSQLADMIN --no-defaults --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping
 | 
						|
 | 
						|
#
 | 
						|
# Bug #33899: Deadlock in mysql_real_query with shared memory connections
 | 
						|
#
 | 
						|
 | 
						|
let $name= query_get_value("SHOW GLOBAL VARIABLES LIKE 'shared_memory_base_name'", Value, 1);
 | 
						|
let $stmt= `SELECT REPEAT('a', 2048)`;
 | 
						|
 | 
						|
SET @max_allowed_packet= @@global.max_allowed_packet;
 | 
						|
SET @net_buffer_length= @@global.net_buffer_length;
 | 
						|
 | 
						|
SET GLOBAL max_allowed_packet= 1024;
 | 
						|
SET GLOBAL net_buffer_length= 1024;
 | 
						|
 | 
						|
--error 1
 | 
						|
--exec echo SELECT '$stmt'| $MYSQL --protocol=memory --shared-memory-base-name=$name 2>&1
 | 
						|
 | 
						|
SET GLOBAL max_allowed_packet= @max_allowed_packet;
 | 
						|
SET GLOBAL net_buffer_length= @net_buffer_length;
 | 
						|
 | 
						|
--echo End of 5.0 tests.
 |