2012-10-14

WINE oneliners

fixme:d3dcompiler:D3DCompile data data_size 424, filename "memory", defines (nil), include 0x32ed50, entrypoint "VShad",
is solved by
winetricks d3dcompiler_43

Switching to multi-arch on NVidia amd64 systems

The following packages have unmet dependencies:
 nvidia-glx : Depends: xserver-xorg-video-nvidia (= 304.60-1) but it is not going to be installed
              Recommends: nvidia-settings
              Recommends: libgl1-nvidia-glx-i386 but it is not installable
              Conflicts: nvidia-glx:i386 but 304.60-1 is to be installed

or
"err:module:load_builtin_dll failed to load .so lib for builtin L"opengl32.dll": libGL.so.1: cannot open shared object file: No such file or directory"
"Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly"
is fixed by
sudo dpkg --add-architecture i386
sudo apt-get update
#remove ALL nvidia related packages
dpkg -l *nvidia* |cut -f 3 -d ' '|grep -v any|grep nvidia|xargs sudo apt-get purge -y
#install the driver just for amd64
sudo apt-get install nvidia-glx
#install the openGl libs for both archs
sudo apt-get install libgl1-nvidia-glx libgl1-nvidia-glx:i386

2012-06-14

Java Classes Fun Fact

java.lang.NoClassDefFoundError can be caused by runtime exception (i.e. NPE) in static initialization blocks or even variable initialization of class you are trying to use.

2012-02-09

Reading outlook .msg files under Linux

Got an email in format unreadable for your mail reader?
I always forget that there is great tool for doing just that: http://code.google.com/p/ruby-msg/

2012-01-07

Valgrind - "client switching stacks"

If you ever start to receiving following warning from Valgrind:
Warning: client switching stacks?
Followed by many error messages like "Invalid read/write" containing a note: "Address  is on thread 1's stack" then the cause is very simple. You are just allocating too large variables on stack - in my case I had too large array, as local variable, in one of functions. If you can't or don't want to use heap it is possible to tune valgrind with "--max-stackframe" parameter i.e.
valgrind --max-stackframe=10485760 ./a.out
This will prevent false positive detection  of stack switching up to 10MB.

One additional, much more obvious tip, use "-fno-inline" when building C++ binaries for use with valgrind, otherwise there won't be line numbers in stacktraces for any template functions.