First big PITA in reallife D project

Stephan spam at extrawurst.org
Tue Oct 19 03:45:28 PDT 2010


Hey guys I wanted to discuss my first major depressing experience with D 
in a reallife project.

First off here is the according bug report : 
http://d.puremagic.com/issues/show_bug.cgi?id=4951

I have to mention that it was by far not the first bug i encountered in 
D but it has never been such a PITA. I spent hours and hours of 
searching, rewriting and crawling my code for the cause of this issue. 
Just to finally find out that it was not my code but some bug in druntime.

What i do:
I spawn multiple threads all periodically connecting to some webservers 
waiting for the request to finish. Every request is totally independent 
of the others. There is no data sharing in my code. Now i have a 
protocol that makes my process send one last important request when 
shutting down. For a clean shut down i wanted to make sure that all the 
other threads are shut down first. That way the final request of the 
process is the very last. So i wait for every thread to finish their 
request and stop them.
BUT it wont work like that. AFTER i stopped all other threads some 
strange behavior of druntime makes every creation of an InternetAddress 
instance (internally trying to resolve host) impossible (throws an 
exception). Additionally even if the Internet Addresses were created 
upfront the TcpSockets wont connect but throw.
I have no idea what the heck is going on inside of the druntime that 
could cause this but in my opinion it makes designing a big server 
environment pretty much impossible because it would mean that i cannot 
let any of my user generated threads exit unless i want to shutdown 
completely anyway.

Perhaps one side note: I am testing and having these issues under Windows.


I have never been so tempted to use another language while coding in D 
as i was this time and that makes me sad.


- Stephan


More information about the Digitalmars-d-announce mailing list