Doug Kwan
Doug Kwan is a senior software engineer at Google's headquarters in Mountain View, California. He is on Google's compiler team and works on Android's C/C++ compiler. Before joining Google in 2007, he worked on the compiler for CELL processor used in Sony's Playstation 3 and the Code Morphing Software running on Transmeta's VLIW processors. Doug was born in Hong Kong and had lived there until he moved to California. He obtained his bachelor's degree in computer engineering and master's in computer science from The University of Hong Kong.
Research Areas
Authored Publications
Sort By
Preview abstract
CPUs are getting more complex with every generation, on both the logical and the physical levels. Unsurprisingly, this leads to more bugs and defects in CPUs being overlooked during testing, which causes data corruption or other undesirable effects when these CPUs are used in production. Some defects may also be caused by aging.
If the RTL (“source code”) of a CPU is available, we could apply greybox fuzzing to the CPU model almost like any other software [Tri21]. However our targets are general purpose x86_64 CPUs produced by third parties, where we do not have the source, so in our case CPU implementations are opaque. Moreover, we are more interested in CPU defects (manufacturing problems that affect just one or several cores) as opposed to bugs (design problems that affect all cores of a given family of CPUs).
In this paper we present SiliFuzz, a work-in-progress system that finds CPU defects by fuzzing proxies, like CPU simulators or disassemblers, and then executing the accumulated test vectors (“corpus”) on actual CPUs on a large scale. The major difference between this work and traditional software fuzzing is that a software bug fixed once will be fixed for all installations of this software, while with CPU defects we have to test every individual core repeatedly over its lifetime due to wear and tear. We also analyze four groups of CPU defects that SiliFuzz has uncovered and the patterns shared by other findings.
View details
Google's C/C++ toolchain for smart handheld devices
Jing Yu
Bhaskar Janakiraman
VLSI Design, Automation, and Test (VLSI-DAT), 2012 International Symposium on, IEEE
Preview abstract
Smart handheld devices are ubiquitous today and software plays an important role on them. Therefore a compiler and related tools can improve devices by generating efficient, compact and secure code. In this paper, we share our experience of applying various compilation techniques at Google to improve software running on smart handheld devices, using our mobile platforms as examples. At Google we use the GNU toolchain for generating code on different platforms and for conducting compiler research and development. We have developed new techniques, added features and functionality in the GNU tools. Some of these results are now used for smart handheld devices.
View details