<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/104897>104897</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [lldb] The registered function with SetScriptCallbackFunction doesn't continue execution after calling StepOut() inside
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          kohnakagawa
      </td>
    </tr>
</table>

<pre>
    I posted this issue at [Stack Overflow](https://stackoverflow.com/questions/78860541/the-registered-function-with-setscriptcallbackfunction-doesnt-continue-executio), but this issue seems a bug of LLDB, so I created this issue.

I'm running [a sample script from the book "Advanced Apple Debugging & Reverse Engineering"](https://github.com/kodecocodes/dbg-materials/blob/editions/4.0/22-script-bridging-classes-and-hierarchy/projects/final/BreakAfterRegex.py). This script defines a command called bar, which does the following:

1. Creates a breakpoint for a function using a regular expression
2. When the breakpoint is hit, it steps out to the function's return
3. Evaluates the return value using the expression command and outputs the result to stdout
4. Continues execution automatically (because the breakpointHandler function registered with SetScriptCallbackFunction returns False)

However, when I load this script in LLDB (lldb-1500.0.22.8 on macOS Sonoma 14.5) and execute the command, step 4 doesn't occur. The execution doesn't continue unless I manually enter the c command in LLDB. If I remove the thread.StepOver() call, step 4 works correctly.

Steps to reproduced are as follows.

```
$ lldb --version
lldb-1500.0.22.8
Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1)
$ cat test.m
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *filePath = @"/tmp/hoge.txt";
        
        NSString *content = @"Hello World";
        
        NSError *error;
        BOOL success = [content writeToFile:filePath
 atomically:YES
 encoding:NSUTF8StringEncoding
 error:&error];
        
        if (success) {
 NSLog(@"Success");
        } else {
 NSLog(@"Error");
        }
    }
    return 0;
}
$ clang -framework Foundation test.m -o test
$ lldb ./test
(lldb) target create "./test"
Current executable set to '/Users/user/test' (x86_64).
(lldb) command script import ./lldb/BreakAfterRegex.py 
(lldb) bar NSObject.init\] SBBreakpoint: id = 1, regex = 'NSObject.init\]', locations = 2
(lldb) r
Process 2754 launched: '/Users/user/test' (x86_64)
(lldb) ********************************************************************************
breakpoint: -[NSObject init]
object: <_NSThreadData: 0x600002fe8000>
stopped:-[_NSThreadData init]
Process 2754 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = step out
 frame #0: 0x00007ff8130211c2 Foundation`-[_NSThreadData init] + 55
Foundation`-[_NSThreadData init]:
->  0x7ff8130211c2 <+55>: movq 0x411c5737(%rip), %rcx
    0x7ff8130211c9 <+62>: movq   (%rcx), %rcx
 0x7ff8130211cc <+65>: cmpq   -0x8(%rbp), %rcx
    0x7ff8130211d0 <+69>: jne    0x7ff8130211d8            ; <+77>
Target 0: (test) stopped.
(lldb) c
Process 2754 resuming
(lldb) ********************************************************************************
breakpoint: -[NSObject init]
object: <NSProcessInfo: 0x6000010e0000>
stopped:__28+[NSProcessInfo processInfo]_block_invoke
Process 2754 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = step out
    frame #0: 0x00007ff81284b59b Foundation`__28+[NSProcessInfo processInfo]_block_invoke + 32
Foundation`:
->  0x7ff81284b59b <+32>: movq   %rax, 0x4080027e(%rip) ; processInfoCache
    0x7ff81284b5a2 <+39>: popq   %rbp
 0x7ff81284b5a3 <+40>: retq   

Foundation`-[NSProcessInfo arguments]:
    0x7ff81284b5a4 <+0>:  pushq  %rbp
Target 0: (test) stopped.
(lldb) c
Process 2754 resuming
2024-08-12 16:43:30.871560+0900 test[2754:88642] Success
Process 2754 exited with status = 0 (0x00000000) 
```

Since [the breakpointHandler function returns False](https://github.com/kodecocodes/dbg-materials/blob/e8a1f1d0a40c6d45da866ab2e414e947896675e8/22-script-bridging-classes-and-hierarchy/projects/final/BreakAfterRegex.py#L70), the program execution should automatically continue, but it does not.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWF1v27jS_jXMzUACRUm2fJELO4mxAYp2se5i8V4VlDSyuJFElaQS99-_GFJy7CY9Wyz24FycE6SNTc0M5-OZh9RIa9VxQLxl-Y7l9zdycq02t0-6HeSTPMoXeVPq-tvtI4zaOqzBtcqCsnZCkA5Yvjs4WT3Bp2c0TadfWH7PRNE6N1qWbpnYM7G3JKFngbjSPRP7rxNap_Rgmdivi2LF8yxhYu9ajAwelXVosI6aaahIKnpRro0sOlsZNbpKdl0pq6fz41qjHVxU6cGpYcIIT1hNTmkmNkzcQTm5S78tYm9BQjkdQTfw4cP9jqSshkeoDMrrMGPG7xnfhv8fmVj3YKZhUMORopdgZT92CMEzaIzuwbUIpdZPwITY1s9yqLCG7Uhi91hOx6NXFiv4DZ_RWISH4agGRKOGIxPivRwelWunck7ek66x0pWukdJXl8eolw6Nkh19LztdMrHHWi0JzmLOxF6IKDgZlUbV5ENUddJatJEc6qhVaKSp2m9M7Eej_8TKkW6jBtkxsd8ZlE_bxqH5DY94isdvTGxi-Ex5mmOvsVEDUmYr3fdyqIEKhTWU0lCCX1pVtUC18hlqdNfpFwo53V7mOInhzlfB14i2HbUaHDTagISl5jBZyqIEg8epkwbwNBq0VukhmBEx_NHiEIrxakVZaJUjd5QD63C0oAkeOvg0W2dibcGgm8xsLY3h4Vl2k3eLJMNDoDWcfaHlVy_OSaB_enLj5BZNO3V-R-tqPbmwQRbD3QxfCwt-B5CT0710ijL5DZgoSqzkZPG7sH6RQ92hec3OaxMB9Q4c0B18le7m3tm_SlIgFvays0gNc1GKX_QLITQUDwd4hE7LuTnmoqvBNxC51nV1GSU55zGPhYgL0AP0svp0gIMedC8hyeKciY3PSAgxxDFnyjehwxEyDxIqggNdVZMhnOFFVl4fLy0P09ChtfAIvRwmnywcHJpg_1yL2dsYHht4BIO9fg4uuNagrOODw_GTj7ggRynrF169aPNkodLGYOW6b1fMcPBQchoMjkbXE7W8NAjSzkC3V-Jsxeff8FVkQOmDKCJGOIP4-5SG1UAlhxfVOJjFIY83VANLi50cjlEeb2IeJ6KIE15A5ddmSxmPk9dKiwwq6cChdXG_rKWqH7VxwNK7vZ6GWoau2L9-iVuWPlyGRN3VSzUwUdBHaY4V5a7Sg3VQtdIAE1tafg5nDSWYrXdBGQCAZZzgbrBDaXHUurt-Tj8fDwdnAn1uG9Xhr9K1wNJ7UibqFHvXj0zsW33E2J0craXf2fixRUITDu7C4C_YdRr-0Karf8bUgzHax4n04Y347tOnD2CnqiKo-k3y3bLni1EOP-u96pCl59hmfel0HziApdv_ezjMyzhUug4M-vHw--d9EUJ5WJZnqeDLlolV-Jjf_0UgqvFYCo5e1-nj4YM-Unv49BwWEUF4emN0fQ_YWfyhuk_Xj5UvoHH5ZaZeflY5P_VYJqRD1BjZIzUsvEJ2xjhE2n_6rvViAs_FsuczCt5Jc0Q3Xw3oTD9LChGE7yZjqIaBoWRJ9wH0FM_Emon97xYNHaaTJWqZddeU41Ox-rLK6Ch9s-3CWQvRhoakvYPEO0cyvDFSSgMfD59KOs5jNSjH8juW38NhtzsfHizdgqo9HhPqWEPWAjzF-h1lH9MddLryWQ1IFm-2NmHlV6M93MU6z6CT01C1WNOWP52aN5aZ2P53_foElFcFi1i-W2oDoTZzE2i_5jOc3n35ePjsj7Z76SSt8dOKc85FgwXn_Ezh1ulx9HUhw1da19avyrlozQXazscoMJF6JH2dcMIFSZXuY0knV0ynRBREZyyRITAorR68uD9wz3cj8M1MVnkIgSJYN02RpFwkSSUuepyt-A8jACZ2kOfB6M-pnO-mEUsfAPjpaluW3jGxy3NKY7qFXj9_BX7KkqTK1-naXyJyo8b5NYS-VKdXHrsytpmNrcSlMYDZSHV6z8iVhWqxsLhT9SNZiPipmK2UP-NKzRdDm9nQnwO-ESrg4oelu1lnvT5D6nOgTR56vQidvVkw8w7fvQMwuiv355PsfxTwdyjg42FO6ePQ6AsKSDjy9yngyxeCy86bv9CF8cJOfv-l7HT19EUNz_oJ_4PkAPBjfhBFVuab8pof_kZ4njlS8Q5zvE8Qy76hKdI3PZ0beaLQ-CnjBedijZdk4fvpwps7WbX4pln9HnIhoXRp1lGPyx7leM0TQSOdNTI-axh0X89XwB-Q43WmpDlOPQ7OXjLkG9eyeaNlHxgn2369du2fJwnBRRbxIkoEJCuWbrOUpduUx8U6yVec3NlwHu5_-Y70WbotilUm_LVovs--3QRPyi0v09ZJN4VrDyevA-B8M1Hx3n3BCy-JaqiQLv1_-fZ--U7-z4yDCpk0Sc1lxqtVneW1LFYrWQrMkgw32brYrFbrHIt_y6Ao_bDm88lDkY9GH43sL17obaunrv5u2rG82y8jPOXC8GjQLr6pb9N6k27kDd4ma5ElqUhW-U17uyk2eZNuMpSrBBET5KtiU6Rpg8mKi0beqFtCCC8E53m64nlcckwrkWZ5U6YNphnLOPZSdXHXPfexNscbPwe8TXhWbNY3nSyxs35eKsSAL2FKGMZ2N-aWlKJyOlqW8U5ZZ1_NOOU6P2j1YM7v_VDjYlBzLv9fTGzemX5cDIwo835wQe-0fp4xuXmcoQararyZTHf7L-BE_s5_orm-TOx9lFTnOQ3Pt-L_AwAA___B3o0V">