Thursday, March 27, 2014

Intel HAXM 1.0.6 crashing Windows 8.1

Intel Hardware Accelerated Execution Manager (HAXM) 1.0.6 is the last version that is delivered by Android SDK (check android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager\Release Notes.txt) but this one is causing BSODs with Windows 8.1. Intel has fixed the issue since, but you will have to install the old version and then download the new 1.0.7 version from Intel's website yourself.

Intel® Hardware Accelerated Execution Manager

Intel(R) Hardware Accelerated Execution Manager (HAXM)
with Intel(R) Virtualization Technology (VT) 
for faster Android* Emulation

Version 1.0.7
Hot fix for OS X Mavericks (10.9) and Windows 8.1

windbg> !analyze -v
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *

This bugcheck is generated when the kernel detects that critical kernel code or
data have been corrupted. There are generally three causes for a corruption:
1) A driver has inadvertently or deliberately modified critical kernel code
 or data. See
2) A developer attempted to set a normal kernel breakpoint using a kernel
 debugger that was not attached when the system was booted. Normal breakpoints,
 "bp", can only be set if the debugger is attached at boot time. Hardware
 breakpoints, "ba", can be set at any time.
3) A hardware corruption occurred, e.g. failing RAM holding kernel code or data.
Arg1: a3a01f58992ad4f7, Reserved
Arg2: b3b72bdeebaad53e, Reserved
Arg3: fffff800820b3000, Failure type dependent information
Arg4: 0000000000000003, Type of corrupted region, can be
 0 : A generic data region
 1 : Modification of a function or .pdata
 2 : A processor IDT
 3 : A processor GDT
 4 : Type 1 process list corruption
 5 : Type 2 process list corruption
 6 : Debug routine modification
 7 : Critical MSR modification

Debugging Details:

  Kernel Generated Triage Dump






ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) amd64fre

LAST_CONTROL_TRANSFER:  from 0000000000000000 to fffff8008055eca0

ffffd000`235d31c8 00000000`00000000 : 00000000`00000109 a3a01f58`992ad4f7 b3b72bde`ebaad53e fffff800`820b3000 : nt!KeBugCheckEx


fffff800`8055eca0 48894c2408      mov     qword ptr [rsp+8],rcx


SYMBOL_NAME:  nt+14dca0

FOLLOWUP_NAME:  MachineOwner


IMAGE_NAME:  ntkrnlmp.exe


IMAGE_VERSION:  6.3.9600.16452

FAILURE_BUCKET_ID:  0x109_nt+14dca0

BUCKET_ID:  0x109_nt+14dca0


FAILURE_ID_HASH_STRING:  km:0x109_nt+14dca0

FAILURE_ID_HASH:  {8339dd0b-1f09-c6df-317e-b65c941183a4}

Followup: MachineOwner

Friday, March 7, 2014

My "new" Dell Latitude E6410

Over the years I used a few Dell laptops at work and I must say I like the Latitude E line for a few reasons - build quality, layout and design is quite different from the Inspiron (consumer) line and even the Vostro (small business) line, so you can easily access and replace components, they are compact and sturdy, good screen resolutions, solid keyboards and overall good workers. My current one is a Dell Latitude E6420 and on top of that I think it is a bit of a looker too.

Back in January I was looking for a new laptop and the new Dell Latitude 5000 line seemed interesting, but even with the January sales and fairly minimal customizations (1600x900 resolution, 8GB RAM) it went around to around 1000 Euro incl. VAT and shipping. Although good value overall, with economy noadays and money pressure it felt like a bit of a splurge as I couldn't justify the upfront cost.

And then it hit me - I've always taken good care of my work laptops and have been wondering what are companies doing with the old hardware once it was "refreshed" every 2-3 years when coming out of warranty. I remember I've asked my own company IT people a couple of years ago whether there was an option to buy them after that and they said no, probably to avoid the hassle where things could easily get mixed up and bring them more work / trouble then needed.

And they I thought, if my company doesn't sell them (employes or otherwise) it doesn't mean other companies don't do it, right? And so I've taken the search to, then I found and finally it appears that even sold used / refurbished laptops now!

Somehow it made more sense to get a used Latitude for 300 euro, get one more year or so out of it, then go to the next model, even if the yearly cost would be similar, at least if a better deal came along I didn't feel like I was stuck with it, I could give this one to someone in the family and move up.

My first "mistake" was that I started looking for a Latitude E6420 or E6430 cause I knew they were nice machines - then I realized that mine still had a few months of warranty and probably there wasn't a whole lot of them on the market, so eventually after a few weeks of searches and few missed bids I lowered my expectations and aimed for E6410, knowing though they would a slightly older generation of CPUs and chipsets, but still good Intel Core i5 machine.

My other "mistake" was to concentrate on US, cause the $  prices and their conversion to Euro was quite appealing, even including shipping costs, to find out later with a bit of a disappointment that importing them into Ireland from outside EU would mean paying import VAT at 23% from declared value + shipping charges + insurance, which overall made the option less appealing - that plus whether the product had a problem meant paying quite a back to ship it back, on top of having to use a UK power adapter and possibly not getting along with a US keyboard, although I found quite a few replacements online at a cost.

And so last week on a Tuesday evening I found more or less by accident about 10-15 Dell Latitude E6410 machines just freshly thrown on eBay by an UK seller (it-zone-2), exactly what I was looking for - not very picky, but I was looking for a few key points: a screen resolution of 1440x900 or 1600x900 (enough for Eclipse use), an Intel Core i5 (virtualization) and 4-8GB of RAM. They were getting a lot of attention - carefully picking and reading the item description (some were described as having scratches), but generally the same specs - and so I finally bought this one for 290 euro!

Dell Latitude E6410 (eBay)

Arriving 3 days later on Friday I was very nicely impressed, not only by the speed of the delivery but also by the condition of the machine - maybe I was just lucky, but I'd like to think that it was just good business sense on the behalf of the seller.
  • new keyboard (coming from a UK seller it meant I didn't have to replace it, saving 30-40 euro)
  • screen in very good condition
  • single 4GB RAM module (meaning I could easily install a new module and bump it up to 8GB, now this was luck :-)
  • clean CPU fan, possibly newly replaced (your regular not cleaned CPU fan looks like this :-)
  • generally in very good condition, bar a couple of scratches on the cover lid, absolutely fine with that, didn't buy it for looks).

Already done or planning to do some small  changes :
  • Windows 7 Home Premium for Refurbed PCs 32 bit came preinstalled only seeing 3.4 GB  of RAM. In preparation for the RAM upgrade, I've downloaded and installed the 64 bit version instead.
  • update BIOS from A06 to A16 (gradually going through A09 then A11 as Dell recommends in the instructions).
  • install another 4GB RAM module (Samsung M471B5273CH0-CH9 from at ~40 euro, free shipping).
  • replace DVD drive with a 2nd HDD caddy to install the Kingston SSDNow V300 as the primary OS drive while keeping the Seagate HDD for project files, temp files, logs, general storage etc.
  • improve cooling for heavy use through a range of cheap and cheesy methods :-) This model has got quite short rubber feet, although the heat distribution on the bottom seems to be quite wide, which is good, just needs better air flow.
    1. furniture pads - cheap and somewhat effective to shave a couple of degrees C. Found a large set for 2 euro in a local shop but they are slippery on a kitchen table or a desk, should be careful though, still looking for some rubber ones.
    2. external laptop fan - haven't done this one yet, I'm sure it'll look tacky hanging on the side of the laptop and will have to find a way to disable that LED, but it looks cheap enough and might be effective if we get another good summer here in Ireland :-) This laptop has the heatsink on the left side, probably wouldn't mind it so much if it was at the back behind the screen.
    3. laptop cooling pad - this will probably be the most effective method, best looking, although the downside will be the cost as well as raising the laptop and possibly at an angle, needs more researching.

And that's all folks! Although there is a good chance most people are not going to go for anything like this, I know it was frustrating for me at times and felt like dropping the towel and buying one of the shelf, although at the same time it was an interesting experience and thought maybe someone else will find it useful, who knows...

Windows 7 Home Premium (x64)
Windows 8.1 Enteprise Evaluation (x64)

Sunday, March 2, 2014

Android SDK Tools on Ubuntu 14.04 beta x64

Android SDK Tools require 32 bit libraries and normally you are recommended to install ia32-libs package, which is not available for Ubuntu 14.04 anymore.
$ sudo apt-get install ia32-libs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package ia32-libs is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  lib32z1 lib32ncurses5 lib32bz2-1.0

E: Package 'ia32-libs' has no installation candidate

Android Debug Bridge (adb) 

$ ~/android-sdk-linux/platform-tools/adb
/home/dandar3/android-sdk-linux/platform-tools/adb: error while loading shared libraries: cannot open shared object file: No such file or directory

Install lib32stdc++6 package:
$ sudo apt-get install lib32stdc++6
The following NEW packages will be installed
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Preparing to unpack .../lib32stdc++6_4.8.2-16ubuntu4_amd64.deb ...
Unpacking lib32stdc++6 (4.8.2-16ubuntu4) ...
Setting up lib32stdc++6 (4.8.2-16ubuntu4) ...
Processing triggers for libc-bin (2.19-0ubuntu2) ...
adb should work fine now.
$ ~/android-sdk-linux/platform-tools/adb version
Android Debug Bridge version 1.0.31

Android Asset Packaging Tool (aapt)

aapt requires both lib32stdc++6 as well as lib32z1 (which in fairness it was suggested above).

$ sudo apt-get install lib32z1
The following NEW packages will be installed
0 to upgrade, 1 to newly install, 0 to remove and 0 not to upgrade.
Preparing to unpack .../lib32z1_1%3a1.2.8.dfsg-1ubuntu1_amd64.deb ...
Unpacking lib32z1 (1:1.2.8.dfsg-1ubuntu1) ...
Setting up lib32z1 (1:1.2.8.dfsg-1ubuntu1) ...
Processing triggers for libc-bin (2.19-0ubuntu2) ...

Testing again it should work now:
$ ~/android-sdk-linux/build-tools/19.0.2/aapt version
Android Asset Packaging Tool, v0.2