niedziela, 14 października 2012

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

czwartek, 14 czerwca 2012

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.

czwartek, 9 lutego 2012

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/

sobota, 7 stycznia 2012

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.