Hello,
I got the "method call on terminated object" error from the following 
lines, after passing these lines many times successful:

class TC
	def onTcp conn
		loop { s = conn.read 1024 # read String up to 1024 bytes 
			break if s.empty?
			@obudline << s
			print @obudline.length,': '; p @obudline
			while @obudline.include?("\n") 
				# all fine until here
				# error here vvvvvvvvvvvvvvvvvvv
				s = @obudline.slice!(/.*\n/) # next line
				...
				@passed = true if condition # simplified
		}
	end
	...
end

My question is:
Under which circumstances is an String "terminated"?

Very simplified global scenario:
load 'tc1.rb' 
$tc.onTcp (conn) unless tc.passed # runs fine many 1000 times
load 'tc2.rb' 
$tc.onTcp (conn) unless tc.passed # fails after some reads

tc1.rb:
class TC1 < TC
end
$tc = TC1.new

tc2.rb
class TC2 < TC
end
$tc = TC2.new

conn.read calls the following function from an own extension:		
	VALUE TCP_Read(VALUE self, VALUE maxL) 	{
		CRbTcp* p; Data_Get_Struct(self, CRbTcp, p);
		int ml = NUM2INT(maxL);		
		std::string data;
		try { data=p->Read(ml); }
		catch(CRbException & e) { 
			ext_raise(self,e.str(),__FILE__,__LINE__); }
		return rb_str_new(data.data(),data.size());
	}

../defTestcase.rb:880:in `slice!': method call on terminated object 
(NotImplementedError)
        from ./defTestcase.rb:880:in `onTcp'