Dear Community,

My student assistant and I working on an artificial intelligence library in D for a while. This library is part of my PhD thesis in order to perform several experiments to push the state of the art.

(Yes, after the thesis is published, the entire library gets open source on GitHub including novel algorithms)

Right now, we are done with the development and ready to start experiments. Until now, almost anything runs fine with our unit tests.

Besides the unit tests, the main program is now able to startup but crashes after a while without any message at all. No stack trace, no exception, nothing. Obviously, this makes it hard to debug anything...

To get a roughly impression, what the code uses (maybe this information will help to limit the possibilities):

- External dependencies: fluent-asserts, requests and our own library quantum-random for physical randomness - Many meta-programming e.g. with templates across 9,000 lines of code - The code was designed to be OOP... composition, inheritance, delegation, polymorphism... - We call many instances of an external Go program with a Maze simulation (the task for the AI) by using pipeProcess() - We use parallel foreach loops for scaling (we have issues with that also -- may I open another thread for it)
- We send thousands of HTTP requests using the requests library
- The entire simulation runs in Docker containers on huge servers (144 CPU Cores, ~470 GB RAM). Base image uses DMD 2.076.0 + Ubuntu Server 16.04

Are there any well-known circumstances, bugs, etc. where an abrupt interruption of a D program without any message is possible? My expectation was, that I would receive at least a stack trace. For debugging, I disabled parallelism at all in order to eliminate effects like exceptions are hidden in threads, missing/wrong variable sharing, etc.

I would be pleased about any idea, as I am currently stuck and no longer know how and where to continue debugging.


Best regards
Thorsten

Reply via email to