It seems that surf commit 222 breaks surf's ability to process webkit signals in windows spawned from an existing surf instance. Also the patch doesn't actually fix the segfault mentioned in the commit message.
It seems that if there is a segfault from closing a window while the page is loading, the proper response would be to stop the page from loading before destroying the client. I'm not sure how the changes in 222 are even supposed to fix that segfault in the first place. Anyway, I just slapped a "webkit_web_view_stop_loading()" call in destroyclient in 221, instead of changing newclient. This approach doesn't seem to break existing functionality, and it solves the segfault problem from 221. Diff's attached.
diff -r dbb565b8d61c surf.c --- a/surf.c Fri Jun 25 09:42:58 2010 +0200 +++ b/surf.c Fri Sep 03 08:05:03 2010 -0400 @@ -211,6 +211,7 @@ destroyclient(Client *c) { Client *p; + webkit_web_view_stop_loading(c->view); gtk_widget_destroy(c->indicator); gtk_widget_destroy(GTK_WIDGET(c->view)); gtk_widget_destroy(c->scroll);