labath added inline comments.

================
Comment at: lldb/source/Target/TargetProperties.td:183
     Desc<"A path to a python OS plug-in module file that contains a 
OperatingSystemPlugIn class.">;
+  def PluginReportsAllThreads: Property<"plugin-reports-all-threads", 
"Boolean">,
+    Global,
----------------
jingham wrote:
> labath wrote:
> > jingham wrote:
> > > labath wrote:
> > > > jingham wrote:
> > > > > labath wrote:
> > > > > > If this is relevant only for os plugins, then it would be good to 
> > > > > > reflect that in the name as well.
> > > > > I thought about that.  In the future a regular Process plugin might 
> > > > > decide it was too expensive to report all threads as well.  There's 
> > > > > nothing in this patch that wouldn't "just work" with that case as 
> > > > > well.  Leaving the OS out was meant to indicate this was about how 
> > > > > the Process plugin OR any of its helpers (e.g. the OS Plugin) 
> > > > > produces threads.
> > > > Well, I am hoping that if we ever extend this support to the regular 
> > > > process plugins, we will implement it in a way where the plugin itself 
> > > > can tell us whether it is operating/supporting this mode (which I guess 
> > > > would involve a new gdb-remote packet and some specification of what 
> > > > exactly should happen when it gets sent), instead of relying on the 
> > > > user to set this correctly.
> > > > 
> > > > I mean, in an ideal world this is I would want to happen with the 
> > > > python plugins as well, but it seems that we are stuck with some 
> > > > existing plugins which already do that. However, I wouldn't want to 
> > > > plan on the same thing happening again. :)
> > > Right, I put this in mostly to help backwards compatibility.  For 
> > > instance, another OS Plugin I know about handles some older cooperative 
> > > threading scheme.  That one does report all threads on each stop.  I 
> > > didn't want to force them to do anything to keep their plugin working as 
> > > well as it did before.  That's also why I set the default to true here.
> > > 
> > > Even when we have plugins that actually support not reporting all 
> > > threads, you could imagine somebody having a Process plugin that supports 
> > > both modes - particularly early in the development of its support for 
> > > this feature, and in some corner cases the "doesn't report all threads" 
> > > mode has some subtle problem.  Having this setting will allow people to 
> > > get the slower but more assuredly correct behavior till it works 100% 
> > > reliably.  So I still think the setting has some value.
> > > 
> > > But I agree, going forward there should be some kind of handshake between 
> > > the ThreadPlanStackMap and the Process Plugin, either a "I've reported 
> > > all threads now" which could trigger a prune, or a "Is TID X still alive" 
> > > which the generic code could use to balance the cost of keeping outdated 
> > > stacks alive against when we want to ask about all threads.
> > All of this sounds fine, and I wouldn't mind having a setting like that, 
> > even after the support for partial thread lists is considered "stable". 
> > However, that sounds like a different setting to me -- that's like a 
> > directive to the process plugin about how it should behave, whereas this 
> > setting is more like a statement of fact about what the plugin does.
> > 
> > The setting could be later repurposed to do both, but it's not clear to me 
> > whether that is useful. Like, since we already support plugin-specific 
> > settings, the plugin which decides to implement both modes of operation 
> > could expose that as a custom setting. That way, one wouldn't get the 
> > impression that this setting applies to any process plugin...
> Okay.  I don't want to have to design that right now.  
> 
> Since this is just a workaround for the fact that the extant OS plugins don't 
> have a way to tell me this fact, I'll go back to using this just for OS 
> plugins.  In that case, I think I should move it to experimental.  Once we 
> add an API to the various plugins to advertise how they work, it won't be 
> needed.  The benefit of experimental settings is that their absence doesn't 
> cause the "settings set" to raise an error, so people can leave this in their 
> lldbinit's and it won't cause problems once we use it.
> 
> Now I just have to figure out how experimental settings work in the new 
> tablegen way of doing properties...
An experimental setting sounds good to me.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D76814/new/

https://reviews.llvm.org/D76814



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to