Xamarin Studio java.lang.OutOfMemoryError

Xamarin Studio is a very buggy and flaky product. Having being used it on an every day basis, it’s getting rather frustrating to deal with Xamarins inferior QA.

Here’s one example that keeps on coming up on the “Stable” channel. (I have to bite my tongue really hard not to say what I think about their definition of “Stable”)

This is the dreaded java.lang.OutOfMemoryError:


/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets: Error: Tool exited with code: 3. Output: 
java.lang.OutOfMemoryError: Java heap space
	at java.util.BitSet.initWords(BitSet.java:164)
	at java.util.BitSet.<init>(BitSet.java:159)
	at com.android.dx.ssa.SsaMethod.bitSetFromLabelList(SsaMethod.java:137)
	at com.android.dx.ssa.SsaBasicBlock.newFromRop(SsaBasicBlock.java:161)
	at com.android.dx.ssa.SsaMethod.convertRopToSsaBlocks(SsaMethod.java:173)
	at com.android.dx.ssa.SsaMethod.newFromRopMethod(SsaMethod.java:103)
	at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:44)
	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:98)
	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
	at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:299)
	at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
	at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
	at com.android.dx.command.dexer.Main.processClass(Main.java:682)
	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
	at com.android.dx.command.dexer.Main.access$600(Main.java:78)
	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
	at com.android.dx.command.dexer.Main.processOne(Main.java:596)
	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
	at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
	at com.android.dx.command.dexer.Main.run(Main.java:230)
	at com.android.dx.command.dexer.Main.main(Main.java:199)
	at com.android.dx.command.Main.main(Main.java:103)


Despite having reported this as a bug, it hasn’t been addressed at all. I am still seeing this on Xamarin Studio for OS X v5.4 (build 420).

Here’s a workaround:

Edit the .csproj file and edit the JavaMaximumHeapSize element and set its value to 1G.



Arduino based Blend Micro gives error: Device Descriptor Request Failed in Device Manager

So I started to fiddle around with the Red Bear Lab Blend Micro. All seemed ok, but after I had uploaded a sketch, the device stopped being recognized properly.

The Device Manager in Windows gives me an error message saying Device Descriptor Request Failed:

Device Descriptor Request Failed
Device Descriptor Request Failed

Well, several other blog posts suggests that re-installing the device drivers will help. But that’s really not helping.

The issue seems to be that the device is not responding and communicating properly with the connected USB host for whatever reason when the sketch is running. Let’s see if we manage to revert back to an empty default sketch. The Blend Micro device has a window of 8 seconds from booting until it starts running the loaded sketch. During that time frame, we should be able to upload a default sketch.

First, make sure that the Blend Micro is the selected board in the Arduino IDE:

Blend Micro is selected
Blend Micro is selected

Prepare a sketch with the base minimum code:

void setup() {
// put your setup code here, to run once:
void loop() {
// put your main code here, to run repeatedly:


Then reboot the Blend Micro device by pressing the reset button.

Reset button on the Blend Micro
Reset button on the Blend Micro

The timing can be critical, so you probably have to try multiple times to get it right. A tip is to click the Upload first, wait a half of a second and then press the reset button.