diff -ru wineasio-0.7.3/asio.c wineasio-0.7.3-nuendo-fix/asio.c
--- wineasio-0.7.3/asio.c	2007-12-27 13:53:41.000000000 +0200
+++ wineasio-0.7.3-nuendo-fix/asio.c	2008-01-01 18:10:52.000000000 +0200
@@ -642,11 +642,34 @@
 
 WRAP_THISCALL( ASIOError __stdcall, IWineASIOImpl_stop, (LPWINEASIO iface))
 {
+    int i;
     IWineASIOImpl * This = (IWineASIOImpl*)iface;
     TRACE("(%p)\n", iface);
 
     This->state = Exit;
 
+    for (i = 0; i < This->num_inputs; i++) {
+        if (This->input[i].port == NULL) {
+            TRACE("(%p) Not registered input port %i\n", This, i);
+            continue;
+        }
+
+        if (jack_port_unregister(This->client, This->input[i].port)) {
+            TRACE("(%p) Unregistered input port %i: '%s' (%p)\n", This, i, This->input[i].port_name, This->input[i].port);
+        }
+    }
+
+    for (i = 0; i < This->num_outputs; i++) {
+        if (This->output[i].port == NULL) {
+            TRACE("(%p) Not registered output port %i\n", This, i);
+            continue;
+        }
+
+        if (jack_port_unregister(This->client, This->output[i].port)) {
+            TRACE("(%p) Unregistered output port %i: '%s' (%p)\n", This, i, This->output[i].port_name, This->output[i].port);
+        }
+    }
+
     if (jack_deactivate(This->client))
     {
         WARN("couldn't deactivate client\n");
