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

    <tr>
        <th>Summary</th>
        <td>
            lldb: inconsistent result using follow fork mode
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          tony-go
      </td>
    </tr>
</table>

<pre>
    Hey team 👋🏼 

I hope you are doing great 😄 

I try to do some experiments with `dlsym`/`fork` and how the follow fork mode react to it.

Here is my C program:

```c
#include <dlfcn.h>
#include <stdio.h>
#include <unistd.h>

typedef int (*fork_func_t)(void);

int main() {
  printf("start process pid: %d\n", getpid());

  fork_func_t fork = dlsym(RTLD_DEFAULT, "fork");
  if (NULL == fork) {
    printf("fork symbol not found!\n");
    return 1;
  }

  int pid = fork();
  if (pid != 0) {
    if (pid > 0) {
      printf("exit parent process\n");
    }
    if (pid == -1) {
      printf("fork failed\n");
    }
    return 0;
  }

  printf("continue execution for pid`: %d\n", getpid());

  // wait for 10 seconds before exit
  sleep(10);

  printf("exit child process from pid: %d\n", getpid());

  return 0;
}

When I run on LLDB I have this:

```
(lldb) run
Process 86557 launched: '.../anti-debug/c/build/antidebug' (arm64)
start process pid: 86557
exit parent process
continue execution for pid`: 86561
Process 86557 exited with status = 0 (0x00000000)
```

Either it waits for 10 seconds (due to `sleep`) and display `Process 86557 exited with status = 0 (0x00000000)`, or it directly display the `Process 86557 exited with status = 0 (0x00000000)`.

In both cases I never saw the printed string `exit child process from pid: %d\n`.

It is probably an issue from my code (maybe due how to `sleep` works) rather than with LLDB, but I guess that it is a really good opportunity to learn how stuff works under the hood :) 



 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVk1v2zgQ_TX0ZRCDomxZPvjgxDEaIFgsFi32WFDiyOKWIgVymFT_fkHadR3H3RbdIFAUDmfe4-N8SIagDxZxw5b3bLmbyUi98xtydro7uFnj1LT5gBMQygHYnrP1nq0LVt-f3us9u38AxneMb4_PJ-jdiDC5CNIjKKftAQ4eJZ39a1YvrnzIT0AOlIPgBgT8OqLXA1oK8KqpB1ZxZcI0sIozsWcV75z_wioO0iro3StQj9A5Y9wrJBMMTiF4lC2luJrml3gf0CPoAMMEDzB6d_ByYOX2cksCyr_t6X9RatuaqBBY-aBM19p5z8rHW9ZASrsfWqPVgdSlOT9pGlFhB9oSMFEzsU3n-NxF234mJtZM1C9Oq_RW3l86JodBapud1sBWJyvA6LWlLq-LQNJTOmuLIcCoFSu3wMRSseWDZUIw8QAHpGTIcd7jAFwQOorMyh0cr0XUf3183n3ePe63n54_pmBMiHxHKfT3UAC6S8f749Pzc3JPEY7b3jB_yz1jhWlonAHrEna0ioniTP0yPoBHit5CcbHIVru3R0mijVrBd_z6Fs28RRRpF39H8WJL-XjD_vYQ-FUTjNKjPV_DD_ifyV6DZLXuip8AZbU6qQ2qXwE4qcX_S63L8K2zpG1MNYptJO1sEjBnVMV_I6lSOYs9vEqdkwoKDgFbZ1WABjvnE5Cmb7uDQRyZqAt-K9Y7vdteG3XO-s674TdT_51KVxr93aOFJ_DRgrPw_Ly7hyfo5QsC9Tr8qLd8aw-1MapJ1-qjPa79eaJcV8vlCoyMtu3xRHw1n8-Z2EtL-k5hEw9M7Fsm9k3URp0Mp_VVSh7ph2qRDpUj32wEGeZov5Wn2fDTi6-rZVXcop9Cojo28kCSYsh1xxM5_pWffs4Mr-XJz0dNPXrQlDMlXKcKE7WKmFo9q_gxSapckWk-KB1GI6dk-l1iKdgDuExAaY8tmekcN82e_xX7zXB6stA46qGVAQM8gcUX9BDkccblFEcFgXwarKziv5ro1zCUJuDoXSMbM4G0oEOIePQdJmjTAGWiHuTUICRx85h9IzC8Ov8l5MSV-Xqol_Z45FQCSbImEjzBISZa1EtKAuoAMs1mYyY4OKfAjaPzFK2m_BVgUHqb4QLFrjuiQLQqIyQiLrXDbW6El3V1WbIztSnVulzLGW6KlajrdVWXxazfcCnbqpOq5bjEVtRNU7RFWRTLWjaqxcVMbwQXi4IXC77mq6KYd6ouFm1diq5ulrITbMFxkNrMjXkZ5s4fZlm6TVGIYlXOjGzQhPxFJYTF16OwqdEsdzO_SU53TTwEtuBGBwrfw5Amg5vcDMotaNs6G3SgVIoeQzQEMaRbv_7QmUVvNj3RmDtNbqgHTX1s5q0bmNgngNOfu9G7f7AlJvaZVmBif-L9shH_BgAA__9sl-rd">