1. Is 'key_management_agent' a parent for 'settings_agent' or just a parameter?
2. settings_agent is a stack variable, which dies at the end of the constructor. I would expect moveToThread() to have a problem with that - try allocating it on the heap.
This would also explain this==NULL.
Like I said previously I do this sort of thing other places without problems so I don't see any reason there would be a problem with the 'LCD', it just happens to be this thread that is giving me issues.
1.LCD was a likely candidate - since I don't know your code I wanted to rule it out.
2.I fail to see the relevance of the claim that something worked somewhere else since obviously its not *exactly* the same, and secondly, obviously it doesn't work here - so it helps little that it does somewhere else.
Specially when threads are in question - since alone different hardware (same software) may produce different results, or bring bugs to the surface on one system that are not see on another.
For your own good - stop thinking "this has to work" if it doesn't - rather "I must be doing something wrong if it doesn't work".
By the way, the code as you posted it, really requires no threads.