A new record, replay, and reverse debugger has appeared, and I just had to take a look at what they do and how they do it. “rr” has been developed by the Firefox developers at Mozilla Corporation, initially for the purpose of debugging Firefox itself. Starting at a debugger from the angle of attacking a particular program does let you get things going quickly, but the resulting tool is clearly generally useful, at least for Linux user-land programs on x86. Since I have tried to keep up with the developments in this field, a write-up seems to be called for.
Electric bikes have started to become common,in Sweden in recent years. It’s been a big thing in other countries for a while, so I guess they have finally matured to the point that they can stand our climate. To be honest, I never quite saw the point of such a vehicle, until my wife took a job that perfectly fit their sweet spot, and I got to try hers. It was quite a revelation. I am usually rather hesitant to believe hype, but in this case, I think we do have the making of a really useful type of vehicle that offers a useful alternative for a particular niche in the transportation continuum.
A long time ago, when I was a PhD student at Uppsala University, I supervised a few Master’s students at the company CC-Systems, in some topics related to the simulation of real-time distributed computer systems for the purpose of software testing. One of the students, Magnus Nilsson, worked on a concept called “Time-Accurate Simulation”, where we annotated the source code of a program with the time it would take to execute (roughly) on the its eventual hardware platform. It was a workable idea at the time that we used for the simulation of distributed CAN systems. So, I was surprised and intrigued when I saw the same idea pop up in a paper written last year – only taken to the next level (or two) and used for detailed hardware design!
Continue reading “Time-Accurate Simulation Revisited – 15 years later”
Intel is a big Simics user, but most of the time Intel internal use of Simics is kept internal. However, we recently had the chance to interview Karthik Kumar and Thomas Willhalm of Intel about how they used Simics to interact with external companies and improve Intel hardware designs. The interview is found on the Wind River blog network.
It is also my last blog post written at Wind River; since January 18, I am working at Intel. I am working on ways to keep publishing texts about Simics and simulation, but the details are not yet clear.
Thanks to the good folks at Vector Software, I was pointed to a conference recording on Youtube, from the Google Test Automation Conference (GTAC) 2015 (Youtube video). The recording covers quite a few talks, but at around 4 hours 38 minutes, Brian Gogan describes the testing used for the Chromecast product. This offers a very cool insight into how networked consumer systems are being tested at Google. Brian labels the Chromecast as an “Internet of Things” device*, and pitches his talk as being about IoT testing. While I might disagree about his definition of IoT, he is definitely right that the techniques presented are applicable to IoT systems, or at least individual devices.
I just posted a short blog post on the Wind River blog, introducing a video demo of the Web API to Wind River Helix Lab Cloud. In the post and video, I show how the Lab Cloud Web API works. For someone familiar with REST-style APIs, this is probably baby-level, but for me and probably most of our user base, it is something new and a rather interesting style for an API. Thus, doing a video that shows the first few steps of authentication and getting things going seems like a good idea.
I have read some recent IBM articles about the POWER8 processor and its hardware debug and trace facilities. They are very impressive, and quite interesting to compare to what is usually found in the embedded world. Instead of being designed to help with software debug, it seems the hardware mechanisms in the Power8 are rather focused on silicon bringup and performance analysis and verification in IBM’s own labs. As well as supporting virtual machines and JIT-based systems!
In a blog post at Wind River, I describe how the Wind River Helix Lab Cloud system can be used to communicate hardware design to software developers. The idea is that you upload a virtual platform to the cloud-based system, and then share it to the software developers. In this way, there is no need to install or build a virtual platform locally, and the sender has perfect control over access and updates. It is a realization of the hardware communication principles I presented in an earlier blog post on use cases for Lab Cloud.
But the past part is that the targets I talk about in the blog post and use in the video are available for anyone! Just register on Lab Cloud, and you can try your own threaded software and check how it scales on a simulated 8-core ARM!
I have a long-standing interested in debugging in general and reverse debugging in particular and the related idea of record-replay debug (see a series of blog posts I did a few years ago on the topic: history 1, history 2, history 3, S4D report, updates, Simics reverse execution, and then Lab Cloud record/replay). Recently, I found out that Undo Software, one of the pioneers in the field, had released a product called “Live Recorder“. So I went to check it out by reading their materials and comparing it to what we have seen before.
I am a big fan of proper real decent mechanical tactile clickety-clack keyboards. Writing is my means of communication, creation, and commercial contribution to the world. I write a lot of text – both code and normal language, and I feel that I type faster, more accurately, and produce better text when using a tactile keyboard. I cannot understand how anyone cannot love them once they have their fingers on them. However, mechanical keyboards have a bad reputation for being NOISY. The rest of my family thinks my CoolerMaster Trigger Cherry MX Brown is a bit too noisy when I use it at home. Thus, when I read about the Matias Quiet Pro keyboard, I spent the money and gave it a try. If I could have the feeling of a tactile keyboard without the noise, it would be a wonderful compromise!
On November 3, 2015, I will give a presentation at the Embedded Conference Scandinavia about simulating IoT systems. The conference program can be found at http://www.svenskelektronik.se/ECS/ECS15/Program.html, with my session detailed at http://www.svenskelektronik.se/ECS/ECS15/Program/IoT%20Development.html.
My topic is how to realistically simulate very large IoT networks for software testing and system development. This is a fun field where I have spent significant time recently. Only a couple of weeks ago, I tried my hand simulating a 1000-node network. Which worked! I had 1000 ARM-based nodes running VxWorks running at the same time, inside a single Simics process, and at speeds close to real time! It did use some 55GB of RAM, which I think is a personal record for largest use of system resources from a single process. Still, it only took a dozen processors to do it.
There is a new post at my Wind River blog, about the new Wind River Helix Lab Cloud product that we launched for real last week. The Lab Cloud is a really cool way to expose Simics-style functionality, and my blog goes through some of the more prominent use cases for a simulator in the cloud. There a couple of demo videos linked from the blog, and I have also set up a Youtube playlist collecting the Simics demos and other videos that we have posted there. Quite a set over the past few years, actually!
The recent news that a hacked version of Apple Xcode has been used to insert bad code into quite a few programs for Apple iOS was both a bad surprise and an example of something that has been hypothesized for a very long time. For the news, I recommend the coverage on ArsTechnica of the XCodeGhost issue. It is very interesting to see this actually being pulled off for real – I recall seeing this discussed as a scenario back in the 1990s, going back to Ken Thompson’s 1983 ACM Turing Award lecture.
Now that Windows 10 has been officially out for a while, I decided to give it a try on one of my home machines. I expect that all my Windows 8.1 machines will be updated eventually – it is a free update, after all, and supposedly things should work just as well as in Windows 8.1. Just with a different user interface. Windows 10 is indeed different from Windows 8.1 in fairly significant ways, and it really feels like what would have come after Windows 7 if Windows 8 hadn’t come between. I can see why many or even most people see this as the better upgrade path, even if I lament some of the changes made.
I am using DropBox quite a bit to move files around between various machines (nothing confidential, just stuff that I need to move around and that is a tad on the large side). Today, I hit a very issue where I saved screenshots from a Ubuntu machine and waited for them to show up on a Windows machine. And they never did. Confused, I went to the web interface, and the files were indeed in place there. I could download it from the web interface without an issue. Weird. Other files did sync in the meantime, so just what was going on?
There is a new post at my Wind River blog, about how I helped a colleague resolve a real problem using the preview version of the new Helix Lab Cloud system. The Lab Cloud right now is basically Simics behind a simplified web user interface, exposing the checkpointing and record-replay facilities in a very clear way. You can also share your sessions for live interactions with other people, which is truly cool.
I just added a new blog post on the Wind River blog, about how you do fault injection with Simics. This blog post covers the new fault injection framework we added in Simics 5, and the interesting things you can do when you add record and replay capabilities to spontaneous interactive work with Simics. There is also a Youtube demo video of the system in action.
I had the great honor to be on a panel discussing IoT Security at the DAC back in June. The panel was part of the Embedded Techcon event that took place essentially as a little embedded corner inside the DAC – it was held in a couple of conference rooms next to the regular DAC sessions, and attendees were also mostly attending the DAC in general. Not a bad idea for meshing embedded and hardware design. The panel was a great one, and David Kleidermacher from Blackberry gave me a great take-away: unless security is allowed to gate releases of products, it is hard to think you take security seriously.
On June 30, Wind River (my job) released Simics 5, the latest version of Simics. I have been working with Simics since 2002 now, and the tool is still improving, adding new features, and adopting the current world. The announcement blog post provides an overview of the features of the new release, and we will be doing some additional in-depth posts later on.
While I was on vacation, Wind River published a blog post I wrote about the new multicore accelerator feature of Simics 5. The post has some details on what we did, and some of the things we learnt about simulation performance.
I followed-up on my visit to the Bovington Tank Museum in the UK with a visit to the Swedish equivalent, Arsenalen in Strängnäs. It is about 100 km from Stockholm, and thus less far off than the UK variant. Arsenalen is strictly speaking a “vehicle” museum, not just a tank museum, even though a majority of the vehicles on display are indeed tanks or at least armored vehicles.
Last week, I visited the rather wonderful tank museum (http://www.tankmuseum.org/home) at Bovington in England, UK. Fascinating, and I am happy to have seem so many legendary machines for real.
Today, I visited the Portsmouth Historic Dockyard in Portsmouth, UK, together with my kids. Somewhat surprisingly maybe, the kids mostly loved it and I got to see and learn a lot of interesting history. I found it particularly usful to compare the three main ships on display: the 1510 Mary Rose, the 1765 HMS Victory, and the 1860 HMS Warrior. They show both the development and continuity of the Royal Navy over a very long period of time.
I have read a few news items and blog posts recently about how various types of software running on top of virtual machines and emulators have managed to either break the emulators or at least detect their presence and self-destruct. This is a fascinating topic, as it touches on the deep principles of computing: just because a piece of software can be Turing-equivalent to a piece of hardware does not mean that software that goes looking for the differences won’t find any or won’t be able to behave differently on a simulator and on the real thing.
There is a new post at my Wind River blog, about the Simics Agent feature that we included in Simics last year. Took a while to get a blog out, as I had so many other things to write about. It was also nice to get a video demo out to accompany the post. The most interesting part about the Simics Agent to me is how much more convenient it is to script a target with an agent on the inside. Too bad that also changes the target software stack a bit — but I do think that that is OK most of the time. As always, the solution has to be designed with the end goal in mind, and there is no absolute right or wrong here. Read the blog post for more details!
I just got hit by a strange behavior in Microsoft word: the comment and format change “balloons” that pop up next to the text when using change tracking and viewing changes started to overflow their allocated balloons. The font used look very funny too. The issue was that a document contained a format specification for these balloons that used a font not present on my system, which in turn caused Word to use something like Courier to display it. Which did not look nice. However, it was easy to solve.
The Security Now Podcast number 497 dealt with the topic of Vehicle Hacking. It was fairly interesting, if a bit too light on the really interesting thing which is what actually went on in the vechicle hack that was apparently demonstrated on US national television at some point earlier this year (I guess this CBS News transcript fits the description). It was still good to hear the guys from the Galois consulting firm (Lee Pike and Pat Hickey) talking about what they did. Sobering to realize just how little even a smart guy like Steve Gibson really knows about embedded systems and the reality of their programming. Embedded software really is pretty invisible in both a good way and a bad way.
I have been thinking about the role and prestige of testing for the past several years. Many things I have read and things companies have done indicate that “testing” is something that is considered a bit passe and old-school. Testers are dead weight that get into the way of releases, and they are unproductive barnacles that slow development down. Testers can all be replaced by automatic testing put in place by brilliant developers. The creative developer types are the guys with the status anyway. I might be exaggerating, but there is an issue here. I think we need to be acknowledge that testers are a critical part of the software quality puzzle, and that testing is not just something developers can do with one hand tied behind their back.
There is a new post at my Wind River blog, about the Trinity of Simulation – the computer, the system, and the world. It discusses how you build a really complete system model using not just a virtual platform like Simics, but you also integrate it with a model of the system the computer sits in, as well as the world around it. Like this:
Read more about it in the blog post, and all the older blog posts it links to!
In a dusty bookshelf at work I found an ancient tome of wisdom, long abandoned by its previous owner. I was pointed to it by a fellow explorer of the dark arts of computer system design as something that you really should read. The book was “Fortress Rochester”, written by Frank Soltis, and published in 2001.