diff -u base/cinelerra/virtualaconsole.C hvirtual-1.1.6/cinelerra/virtualaconsole.C
--- base/cinelerra/virtualaconsole.C	2003-06-16 22:01:11.000000000 +0200
+++ hvirtual-1.1.6/cinelerra/virtualaconsole.C	2003-07-18 11:09:13.000000000 +0200
@@ -32,6 +32,8 @@
 
 VirtualAConsole::~VirtualAConsole()
 {
+	delete_virtual_console();
+	delete_input_buffers();
 }
 
 int VirtualAConsole::total_ring_buffers()
diff -u base/cinelerra/virtualconsole.C hvirtual-1.1.6/cinelerra/virtualconsole.C
--- base/cinelerra/virtualconsole.C	2003-06-16 22:01:11.000000000 +0200
+++ hvirtual-1.1.6/cinelerra/virtualconsole.C	2003-07-18 11:11:18.000000000 +0200
@@ -34,8 +34,7 @@
 VirtualConsole::~VirtualConsole()
 {
 // Destructor always calls default methods so can't put deletions in here
-	delete_virtual_console();
-	delete_input_buffers();
+// Deletions have been moved to downmost destructors
 
 	delete startup_lock;
 	if(playable_tracks) delete playable_tracks;
@@ -126,6 +125,7 @@
 
 int VirtualConsole::allocate_input_buffers()
 {
+//printf("VirtualConsole::allocate_input_buffers 1\n");
 	if(!ring_buffers)
 	{
 		ring_buffers = total_ring_buffers();
@@ -356,11 +356,13 @@
 int VirtualConsole::delete_virtual_console()
 {
 // delete the virtual modules
+//printf("delete_virtual_console 1 %i %p\n", total_tracks);
 	for(int i = 0; i < total_tracks; i++)
 	{
 		delete virtual_modules[i];
 	}
-	if(total_tracks) delete [] virtual_modules;
+	// even when calling new[0] (when total_tracks == 0), pointer gets allocated 
+	if(virtual_modules) delete [] virtual_modules;
 	virtual_modules = 0;
 
 // delete sort order
@@ -370,6 +372,7 @@
 int VirtualConsole::delete_input_buffers()
 {
 // delete input buffers
+//printf("VirtualConsole::delete_input_buffers 1\n");
 	for(int buffer = 0; buffer < ring_buffers; buffer++)
 	{
 		delete_input_buffer(buffer);
diff -u base/cinelerra/virtualvconsole.C hvirtual-1.1.6/cinelerra/virtualvconsole.C
--- base/cinelerra/virtualvconsole.C	2003-06-16 22:01:11.000000000 +0200
+++ hvirtual-1.1.6/cinelerra/virtualvconsole.C	2003-07-18 11:09:13.000000000 +0200
@@ -25,6 +25,8 @@
 
 VirtualVConsole::~VirtualVConsole()
 {
+	delete_virtual_console();
+	delete_input_buffers();
 }
 
 int VirtualVConsole::total_ring_buffers()
@@ -45,6 +47,7 @@
 {
 	buffer_in = new VFrame*[total_tracks];
 //printf("VirtualVConsole::new_input_buffer 1\n");
+
 	for(int i = 0; i < total_tracks; i++)
 	{
 		buffer_in[i] = new VFrame(0,
@@ -57,6 +60,7 @@
 
 void VirtualVConsole::delete_input_buffer(int ring_buffer)
 {
+//printf("VirtualVConsole::delete_input_buffer 1\n");
 	for(int i = 0; i < total_tracks; i++)
 	{
 		delete buffer_in[i];
