{"id":510,"date":"2012-10-13T07:58:16","date_gmt":"2012-10-13T14:58:16","guid":{"rendered":"http:\/\/angryweasel.com\/blog\/?p=510"},"modified":"2012-10-13T08:00:45","modified_gmt":"2012-10-13T15:00:45","slug":"one-of-my-favorite-bugs","status":"publish","type":"post","link":"https:\/\/angryweasel.com\/blog\/one-of-my-favorite-bugs\/","title":{"rendered":"One of my Favorite Bugs"},"content":{"rendered":"<p>On twitter, @SeanNoxious asked me about my most memorable bug. The answer is way too long for twitter, so I thought I\u2019d document one of my favorites here.<\/p>\n<p>When I first joined Microsoft way back in 1995, I was a tester for networking components on Windows 95. One of the areas I owned was testing networking on Japanese, Chinese, and Korean versions of Windows.The early versions of windows and all of the 9x versions of windows didn\u2019t have Unicode. Character sets were <em>multi-byte<\/em> on those systems, meaning that characters may be made up of one <strong><em>or<\/em><\/strong> two bytes. Alpha-numeric characters were usually single-byte (wide \/ two byte versions also existed (when a character had both a single-byte and double-byte version, the single-byte version was referred to as the half-width character. There\u2019s a lot more to say about double-byte characters, but I\u2019ll skip ahead to the good part.<\/p>\n<p>The way windows could tell the difference between a double-byte character and a single-byte character was the lead byte. A certain range of characters are designated lead bytes. They <span style=\"text-decoration: underline;\">always<\/span> indicate that the lead byte, and the next character in the stream are combined to make a double-byte character. The Japanese character for ten (juu) has a hex value of 0x8F5C. The 8F indicates that the following characters are part of a double-byte character. The interesting thing about this particular character (and all characters with an 5C trail byte) is that 5C is the hex value for a backslash \u2013 a character very interesting for network testing on Windows.<\/p>\n<p>There were other characters with interesting trail bytes, but 5C characters were predominant in my testing, and I found a lot of bugs. One day, I was testing copying long files with 5C trail bytes to a Japanese version of Windows NT 3.51 (newly released!), and my test hung. I figured someone else was using the server and rebooted it or was debugging it for some reason, so I walked down to the lab to check it out; and it was sitting at a blue screen. I stared for a minute before doing what every tester does. I rebooted it, and ran back to my office to see if I could do it again.<\/p>\n<p>Sure enough, I had found a serious bug in the NT networking components. One that I knew was tested by people way more experienced than I was, and I was pretty excited.We found other bugs in NT, and plenty of multi-byte bugs in networking, but crashing a remote server has to be one of my favorite finds.<\/p>\n<p>I have another cool backslash story, but I\u2019ll save it for another post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On twitter, @SeanNoxious asked me about my most memorable bug. The answer is way too long for twitter, so I thought I\u2019d document one of my favorites here. When I first joined Microsoft way back in 1995, I was a tester for networking components on Windows 95. One of the areas I owned was testing&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-510","post","type-post","status-publish","format-standard","hentry","category-allposts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/comments?post=510"}],"version-history":[{"count":0,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/posts\/510\/revisions"}],"wp:attachment":[{"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/media?parent=510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/categories?post=510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/angryweasel.com\/blog\/wp-json\/wp\/v2\/tags?post=510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}