<div dir="ltr"><div><div><div>Hi Jim,<br><br></div>I agree that this part of the patch isn't pretty but I wasn't able to find a way to be notified when a shared library is loaded (exactly as you suggest). We need to check on launch or attach and then whenever a new library is loaded, if there's a better way to do that it would be great to clean this up.<br>



<br></div>I can't reproduce the crash on Linux but it looks like we need to unregister the notification callback that's set, that's the only reason I can think of that you would end up in the ProcessStateChangedCallback with an invalid baton pointer. I've attached a patch that I'm hoping will resolve the issue here, it's definitely a bug that it wasn't being unregistered.<br>

<br></div>I hadn't intended for the JITLoaderGDB to be enabled on OSX as I wasn't able to test it there, sorry about that. It's likely not useful there right now as it would need modifications to the ObjectFileMachO to do some relocations, and additionally MCJIT in LLVM would need to be modified to call the GDB hook on OSX (though other JIT hosts may work). That said it shouldn't be causing crashes if enabled.<br>

<br>Thanks for looking into this.<br><br>Cheers,<br>Andrew<br><div><div><div>
<div><br></div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 6, 2014 at 4:28 AM, Jim Ingham <span dir="ltr"><<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">This part of the patch worries me.  If I am debugging a process that doesn’t have this JIT loader symbol, this bit means every time that the process stops for any reason you will search the whole world for some symbol that won’t be found.  That’s something we really avoid doing if we can, programs get pretty big and this is not the sort of thing you want to do.<div>

<br></div><div>I don’t know how this symbol comes about, is there no event (shared library load or something) that you can hook into to find this symbol?</div><div><br></div><div><div><div>This patch is also causing a crash on Mac OS X just running a program.  The crash looks like:</div>

<div><br></div><div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(99,137,255)"><b>(lldb) </b><span style="color:#000000"><b>bt</b></span></div><div style="margin:0px;font-size:11px;font-family:Menlo">
* thread #8: tid = 0xf68e5, name = <lldb.process.internal-state(pid=40372)>, function: lldb_private::Process::GetTarget() , stop reason = EXC_BAD_ACCESS (code=1, address=0x100)</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #0: 0x0000000106f8072c LLDB`lldb_private::Process::GetTarget() at Process.h:2516</div><div style="margin:0px;font-size:11px;font-family:Menlo">    frame #1: 0x0000000108e7aa5a LLDB`JITLoaderGDB::GetSymbolAddress(lldb_private::ConstString const&, lldb::SymbolType) const at JITLoaderGDB.cpp:368</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #2: 0x0000000108e7a8bf LLDB`JITLoaderGDB::SetJITBreakpoint() at JITLoaderGDB.cpp:99</div><div style="margin:0px;font-size:11px;font-family:Menlo">    frame #3: 0x0000000108e7a6d8 LLDB`JITLoaderGDB::ProcessStateChangedCallback(void*, lldb_private::Process*, lldb::StateType) at JITLoaderGDB.cpp:354</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #4: 0x0000000108b7b29b LLDB`lldb_private::Process::SynchronouslyNotifyStateChanged(lldb::StateType) at Process.cpp:1223</div><div style="margin:0px;font-size:11px;font-family:Menlo">

    frame #5: 0x0000000108b89762 LLDB`lldb_private::Process::ShouldBroadcastEvent(lldb_private::Event*) at Process.cpp:3846</div><div style="margin:0px;font-size:11px;font-family:Menlo">    frame #6: 0x0000000108b8454d LLDB`lldb_private::Process::HandlePrivateEvent(std::__1::shared_ptr<lldb_private::Event>&) at Process.cpp:4141</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #7: 0x0000000108b8a755 LLDB`lldb_private::Process::RunPrivateStateThread() at Process.cpp:4290</div><div style="margin:0px;font-size:11px;font-family:Menlo">

    frame #8: 0x0000000108b89bfd LLDB`lldb_private::Process::PrivateStateThread(void*) at Process.cpp:4221</div><div style="margin:0px;font-size:11px;font-family:Menlo">    frame #9: 0x00000001087d811a LLDB`ThreadCreateTrampoline(void*) at Host.cpp:629</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #10: 0x00007fff815df899 libsystem_pthread.dylib`_pthread_body</div><div style="margin:0px;font-size:11px;font-family:Menlo">    frame #11: 0x00007fff815df72a libsystem_pthread.dylib`_pthread_start</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    frame #12: 0x00007fff815e3fc9 libsystem_pthread.dylib`thread_start</div><div style="margin:0px;font-size:11px;font-family:Menlo;color:rgb(99,137,255)"><b>(lldb) </b><span style="color:#000000"><b>f 2</b></span></div>

<div style="margin:0px;font-size:11px;font-family:Menlo">frame #2: 0x0000000108e7a8bf LLDB`JITLoaderGDB::SetJITBreakpoint() at JITLoaderGDB.cpp:99</div><div style="margin:0px;font-size:11px;font-family:Menlo">   96  <span style="white-space:pre-wrap">        </span>        log->Printf("JITLoaderGDB::%s looking for JIT register hook",</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">   97  <span style="white-space:pre-wrap">      </span>                    __FUNCTION__);</div><div style="margin:0px;font-size:11px;font-family:Menlo">   98  <span style="white-space:pre-wrap"> </span></div>

<div style="margin:0px;font-size:11px;font-family:Menlo">-> 99  <span style="white-space:pre-wrap">     </span>    addr_t jit_addr = GetSymbolAddress(ConstString("__jit_debug_register_code"),</div><div style="margin:0px;font-size:11px;font-family:Menlo">

   100 <span style="white-space:pre-wrap">       </span>                                       eSymbolTypeAny);</div><div style="margin:0px;font-size:11px;font-family:Menlo">   101 <span style="white-space:pre-wrap">    </span>    if (jit_addr == LLDB_INVALID_ADDRESS)</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">   102 <span style="white-space:pre-wrap">   </span>        return;</div><div style="margin:0px;font-size:11px;font-family:Menlo"><span style="color:#6389ff"><b>(lldb) </b></span><b>expr *this</b></div>

<div style="margin:0px;font-size:11px;font-family:Menlo">(JITLoaderGDB) $13 = {</div><div style="margin:0px;font-size:11px;font-family:Menlo">  lldb_private::JITLoader = {</div><div style="margin:0px;font-size:11px;font-family:Menlo">

    m_process = 0x0000000000000000 Public: lldb_private::ThreadSafeValue<lldb::StateType> @  Private: lldb_private::ThreadSafeValue<lldb::StateType> @ </div><div style="margin:0px;font-size:11px;font-family:Menlo">

  }</div><div style="margin:0px;font-size:11px;font-family:Menlo">  m_jit_objects = size=160215376 {</div><div style="margin:0px;font-size:11px;font-family:Menlo">    [0] = {</div><div style="margin:0px;font-size:11px;font-family:Menlo">

      first = <parent is NULL></div><div style="margin:0px;font-size:11px;font-family:Menlo">      second = <parent is NULL></div><div style="margin:0px;font-size:11px;font-family:Menlo">    }</div><div style="margin:0px;font-size:11px;font-family:Menlo">

    ...</div><div style="margin:0px;font-size:11px;font-family:Menlo">  }</div><div style="margin:0px;font-size:11px;font-family:Menlo">  m_jit_break_id = 0</div><div style="margin:0px;font-size:11px;font-family:Menlo">  m_notification_callbacks = {</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">    baton = 0x0000000000000001</div><div style="margin:0px;font-size:11px;font-family:Menlo">    initialize = 0x00007fc54b00f3b0</div><div style="margin:0px;font-size:11px;font-family:Menlo">

    process_state_changed = 0x00000001098cb150 (vtable for std::__1::__shared_ptr_pointer<lldb_private::Section*, std::__1::default_delete<lldb_private::Section>, std::__1::allocator<lldb_private::Section> > + 16)</div>

<div style="margin:0px;font-size:11px;font-family:Menlo">  }</div><div style="margin:0px;font-size:11px;font-family:Menlo">}</div></div><div><br></div><div>Looks like the JIT instance that is getting passed in is not good for some reason.</div>

<span class="HOEnZb"><font color="#888888"><div><br></div><div>Jim</div></font></span><div><div class="h5"><div><br></div><div><br></div><div>On Mar 5, 2014, at 2:12 AM, Andrew MacPherson <<a href="mailto:andrew.macp@gmail.com" target="_blank">andrew.macp@gmail.com</a>> wrote:</div>

<br><blockquote type="cite"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+void</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+JITLoaderGDB::ProcessStateChangedCallback(void *baton,</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+                                          lldb_private::Process *process,</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+                                          lldb::StateType state)</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+{</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    JITLoaderGDB* instance = static_cast<JITLoaderGDB*>(baton);</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    switch (state)</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    {</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateConnected:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateAttaching:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateLaunching:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateInvalid:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateUnloaded:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateExited:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateDetached:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        // instance->Clear(false);</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        break;</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateRunning:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateStopped:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        // Keep trying to set our JIT breakpoint each time we stop until we</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        // succeed</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        if (!instance->DidSetJITBreakpoint() && process->IsAlive())</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+            instance->SetJITBreakpoint();</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        break;</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateStepping:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateCrashed:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    case eStateSuspended:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+        break;</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+    }</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+}</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">+</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">

</blockquote></div></div></div><br></div></div></blockquote></div><br></div>