Must have: Strong C++ knowledge experience and deep understanding of how to handle code with gdb (GNU Debugger).
Understanding ELF format and ABI for C++, how compiler produces code.
Decent Python knowledge as all our tests are written in Python (and partly in shell).
Nice to Have: Understanding of system/application memory management and how to detect/localize leaking resources in Linux
Senior, Software Reliability Engineer - Contractor
Plantation, FL (HQ)
Duration: Long Term
Seeking candidates with extensive experience in embedded software on Linux or Android. This individual will lead reliability and be responsible for analysis, finding and fixing problems and tools development to reach required reliability targets. Candidate must be able to demonstrate extraordinary skills in attention to system software reliability development: understanding complex software systems, design maintainable and scalable software taking into account resource leaks, deadlocks, bad patterns, misuse of APIs etc., design and deliver reliability features, lead of investigation and fixing bottlenecks. Seeking strong communication skills and the ability to work in an environment with interdisciplinary teams.
Experience in the domains below are a must:
- Experience in implementation of reliability KPIs and make corrections in software architecture design, understand principles and design patterns of such systems
- Strong knowledge of crash patterns analysis for Linux or Android
- Experience diagnosing and fixing resource bottlenecks, system and application memory allocation, analysis for fragmentations, resource leaks, understanding variants of resource leaks including graphics memory
- Experience with low-cost memory leaks analysis tools in kernel or/and userspace: kmemleak, malloc_debug, dmalloc, memwatch, drmemory
- Experience with low-cost memory corruption analysis tools in kernel or/and userspace: KASAN, mcheck
- Analysis of procfs, smaps, maps, and understanding vss, pss, uss
- Extensive software development experience with C/C++, Linux software development environment; experience in Linux IPC and multithreading programming
- Ability to establish test cycle: explain for testers essential parts of testing for reliability and endurance
- Good coding level for C++ and C
- Good coding level using Python and shell
- Excellent communication, training and documentation skills
Experience in below areas are a plus:
- Open Source contribution
- Post-mortem debugging experience
- ELF format organization and understanding how dynamic linker works
- ARM EABI/x86 ABI, stack organization and how use it in practice
- Development experience for Linux OS or Android; middleware, kernel, and device drivers
- Advanced memory profiling and analysis taking into account CMA, PMM, ION, dmabuf or similar technologies
- Reliability tools development e.g. memory leaks detectors, allocators
- Bachelor's or Master's degree in Computer Science or equivalent work experience
- All your information will be kept confidential according to Equal Employment Opportunities guidelines.