<div><div dir="auto">Sure, could you describe in more detail which example may help you?</div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">чт, 14 февр. 2019 г. в 22:36, Jim Ingham <<a href="mailto:jingham@apple.com">jingham@apple.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space">That’s a little complicated…  <div><br></div><div>lldb has two levels of stop state - private stops and public stops.  When the process gets notification from the underlying process plugin that the process stopped, it raises a private stop event.  That gets handled by the ShouldStop mechanism on the private state thread in lldb, and then if the stop is judged interesting to the user, it gets rebroadcast as a public stop.<div><br></div><div>For instance, when you issue a “step” command, lldb will stop and start the process multiple times as it walks through the source line.  But only the last of those stops are relevant to the user of LLDB, so all the other ones exist only as private stops.</div><div><br></div><div>The SB API’s for the most part should only consider a “publicly stopped” process accessible.  After all, you wouldn’t want some API to succeed sometimes if you happen to catch it in the middle of a private stop.</div><div><br></div><div>But the OperatingSystem plugin needs to get called right after a private stop, so it can provide threads for the ShouldStop mechanism.  We should really have some formal mechanism whereby things like the OS plugin can request elevated rights in the SB API’s, so that they can run at private stop time.  IIRC, we instead have a hack where SB API calls that run on the private state thread are blanket allowed to run at private stop.  The xnu Operating System plugin successfully gets global values to look up its threads.  So I’m not sure why that isn’t working for you.</div><div><br></div><div>Can you cook up a simple example showing the failure and I’ll have a look?</div></div></div><div style="word-wrap:break-word;line-break:after-white-space"><div><div><br></div><div>Jim</div><div><br><div><br><blockquote type="cite"><div>On Feb 14, 2019, at 11:10 AM, Alexander Polyakov <<a href="mailto:polyakov.alx@gmail.com" target="_blank">polyakov.alx@gmail.com</a>> wrote:</div><br class="m_8996099617066268273Apple-interchange-newline"><div><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">It is, the error is: <b>error: error: process must be stopped.</b><br><br>I thought that the plugin (get_thread_info in my case) is invoked when the process is already stopped, but it's not. Is it ok?</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 14, 2019 at 9:53 PM Jim Ingham <<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>All SBValues have an error in them (SBValue.GetError).  Does that say anything interesting?<div><br></div><div>Jim</div><div>  <div><br></div><div><br><div><br><blockquote type="cite"><div>On Feb 14, 2019, at 10:08 AM, Alexander Polyakov via lldb-dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>> wrote:</div><br class="m_8996099617066268273gmail-m_-306735485749780307gmail-m_-1096846428411375768Apple-interchange-newline"><div><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">Hi lldb-dev,<br>
<br>
I work on a custom implementation of OperatingSystem plugin using Python and SB
API. I’m trying to fetch information about some variables from the target into
the plugin, to do that I’m using the following Python code:</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">ready_tasks =
self._target.FindGlobalVariables(‘pxReadyTasksLists’, 1).GetValueAtIndex(0)</div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> </p><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">When I do `print(ready_tasks)` I get:</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">No value</div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> </p><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">At the same time, doing the same actions inside lldb
embedded interpreter follows to:</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">`
print(lldb.target.FindGlobalVariables('pxReadyTasksLists',1).GetValueAtIndex(0))`</div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> </p><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">(List_t [5]) pxReadyTasksLists = {</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">  [0] = {</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">    uxNumberOfItems = 0</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">    pxIndex = 0x00000000</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">    xListEnd = {</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">      xItemValue = 0</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">      pxNext = 0x00000000</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">      pxPrevious = 0x00000000</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">    }</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">  }</div><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">…</div><p class="MsoNormal" style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif"> </p><div style="margin:0in 0in 0.0001pt;font-size:11pt;font-family:Calibri,sans-serif">Does anybody know what may cause such a behavior?</div></div><div><br></div>-- <br><div dir="ltr" class="m_8996099617066268273gmail-m_-306735485749780307gmail-m_-1096846428411375768gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="font-family:arial,helvetica,sans-serif;font-size:12.8px">Alexander</span><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
_______________________________________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a><br><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev</a><br></div></blockquote></div><br></div></div></div></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="m_8996099617066268273gmail-m_-306735485749780307gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="font-family:arial,helvetica,sans-serif;font-size:12.8px">Alexander</span><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
</div></blockquote></div><br></div></div></div></blockquote></div></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif;font-size:12.8px">Alexander</span><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>