-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
segfault during recoding #3
Comments
I've just tried copying RECORD.pcap.gz for the same command from another (modern Ubuntu) host where EnvFuzz is working to see if it get things going on the target system. However, still no luck, so there's something else going on here. |
Likely the
Since this is for an embedded system, maybe Currently, statically linked binaries are not "officially" supported. However, it might be possible to applying the instrumentation to the executable itself, rather than libc, but this has never really been tested.
This could be an ordinary bug, in which case I'd need more information.
The record&replay infrastructure was not desgined for this use case, so I think it is unlikely to work. |
Ok, so I missed the fact that EnvFuzz will work only with 64-bit binaries, so we can cross off the 0-sized RECORD.pcap. However, the segfault remains an issue. My target system is a multilib system and I can reproduce it also there as well as inside my Centos8 docker. How can I help you with more information? Below is the gdb session but I doubt it's very helpful:
The pcap file is partially created (attached). Please let me know what additional information you need. |
I think the segault is real but I am unable to reproduce it (your |
After some digging in, it looks as if the thread running the recorded program crashes. I've tried recording different commands, including simple hello world program and they all crash at the same place in the dynamic linker inside do_lookup_x() function. As I understand it's trying to resolve 'clock_gettime' symbol. Please see the attached gdb session output. Again, this is only on my Centos8 system. |
This method works for secure-mode binaries (#3).
It is not clear what the underlying problem is. Although EnvFuzz modifies the VDSO and |
Well, the only other system I tried is Ubuntu 24.04, which works fine. The only reason I'm using Centos8 is because that's what my target is based on, which means it's easy for me to build EnvFuzz for it. |
The current system was developed on Ubuntu, so there is a likely a bug that is only triggered on different systems. I will have to try it on a Red Hat installation, and will report back. |
That'd be great, thanks in advance! |
My colleage (@Marti2203) tried |
Understood, thank you for the update. |
Hi,
Thanks for sharing your tool.
I'm trying to run it on an embedded system that's based on Centos 8. EnvFuzz is built fine, however recording doesn't work, even for simple commands like ./env-fuzz record -- ls -la /
It returns 'EXIT 0' but the RECORD.pcap is empty. How can I investigate what could be the problem?
I've also tried the same in a Centos8 docker, and an attempt to record the same command results in a segfault. Attached is the strace output of that run.
If an old libc or other dependencies are a problem, would it be possible to build EnvFuzz statically to make it usable on older systems?
Any help would be appreciated.
Thanks,
CM
EnvFuzz.strace.gz
The text was updated successfully, but these errors were encountered: