3884bfe966
vfork() would not save the registers that the parent would expect to have restored after execl() completed. Specially that execl() would call execve() underneath, further messing up the stack of the parent. To avoid that, we fork() for now. Later we will revisit and cleanup vfork()+execve() to actually have vfork() store all the register that the parent expects to see, and not those left by execve(). In the original code, looking at the registers just before the call to popen(), and after the call showed that r7 would get clobbered. This would leave the caller with an invalid pointer, leading to all kinds of data corruptions. execve() is simpler that execl() in this case. Bug: 5336252 Change-Id: I3bf718c0bb4c0439f6f2753f153cdea14175be9c