When making a spell check with aspell, the aspell process is left behind as defunct. I guess this applies also if another spell-check program is used. Although I don't think this is the proper solution, a simple hack that seams to fix this is to remove G_SPAWN_DO_NOT_REAP_CHILD from the call to g_spawn_async_with_pipes() in the function "dict_spell_start_query" in spell.c. From the GLib Reference Manual <http://www.gtk.org/api/2.6/glib/glib-Spawning-Processes.html#GSpawnFlags>: "G_SPAWN_DO_NOT_REAP_CHILD: the child will not be automatically reaped; you must call waitpid() or handle SIGCHLD yourself, or the child will become a zombie."
Thanks for reporting. Should be fixed in SVN. Removing the G_SPAWN_DO_NOT_REAP_CHILD flag actually was the right solution since we don't need to keep the spawned process. The existance of this flag was more or less a copy&paste error :).