JDevlieghere wrote:

> Someone once told me: "Whatever problem you're trying to solve, if you're 
> using atomics, now you've got two problems."
> 
> I can't say I've always followed that advice, but I do think that atomics are 
> rarely the right solution to a problem. And I think this is a good example of 
> that.
> 
> What you want is not to suppress _a_ event (whatever it might be). You want 
> to suppress a very specific event (that is supposed to be generated by the 
> action you're about to perform). That means that something needs to ensure 
> that the other thread reads this flag after you've generated the event. If 
> that's true, then you already have a happens-before relationship and the 
> atomic is not necessary. If it isn't (there is no happens-before), then the 
> atomic will not help.

You're right. I have an implementation that used a mutex but it made the same 
mistake I have here with the atomic. Luckily that's easily solvable by putting 
the code that generates the stop and consumes the stop in the critical section. 

> That said, why is ConnectRemote generating a stopped event in synchronous 
> mode? Maybe that's the bug we should fix?

That's a long standing bug that comes up about once or twice a year. I spend 
some time looking into that at some point, but it's so long ago that I don't 
remember what the  blocker was. That said, solving that isn't sufficient for 
the problem at hand, since we need to solve the asynchronous case as well. 


https://github.com/llvm/llvm-project/pull/137920
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to