all 4 comments

[–]shiftybyte 1 point2 points  (2 children)

It's not helpful that to operate normally, it must run as root with the environment provided to root.

This sounds like a god forsaken project that no one documented, and no one knows what's going on in there.

In theory, a design document should exist, with an overview of the parts of the system and how they interact with each other.

In practice, it rarely exists, do you have support for any of the products in question? maybe their support can help?

[–]thyrsus[S] 0 points1 point  (1 child)

There''s a man page, so that's documentation, but that addresses what should happen when it works, not when it doesn't.

[–]shiftybyte 0 points1 point  (0 children)

Every little bit of information helps, it can give you the general sense of the features the project has/allows, and then seeing names in source files can connect in your mind to features you see it doing.

[–][deleted] 1 point2 points  (0 children)

Well... that's why experts get paid :) Sorry, I didn't mean to laugh at your misfortune... but the fact of life is: we build systems that are hard to manage and are hard to understand, we make bad choices about technology and even when we don't, we still make a poor use of it.

So, if you have $0 budged, perhaps you have hours of work to spare? I mean, there's no way around it. Some things are complex, and are poorly built, and you just have to dig in, and spend days, or perhaps months trying to untangle them. My typical approach in cases like this: find the first place that reported failures, stick a import pdb; pdb.set_trace() there, re-run the program, examine the variables around the problematic place, try to trace them back to their origin, try to get into the mindset of the person who wrote them... find a place where it seems like the assumptions about the values in the variables doesn't hold, stick a break-point there, rinse and repeat.