Newly built VM not finding its display plugin :-(

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Newly built VM not finding its display plugin :-(

Hans-Martin Mosner
 
Hi, I'm in the process of creating a simple and reproducible automated VM build environment using Docker. My current
docker image basically seems to work, however, I've not been able to run the created executable yet.

I've naively assumed that the shell script "squeak" in directory .../products/sqcogspur64linux would do the right thing,
but it complains that it could not find the display driver: "could not find display driver vm-display-X11".

The direcory structure in "products" differs a bit from the release VM directory structure, but it looks like it is
supposed to work anyway.

I've done an strace of the process, and it finds and opens the plugin just fine (twice, actually), but just before
writing the error message it seems to want to open it again under various different names, just not the right one...

Here are the relevant strace lines of the first two plugin maps:

stat("sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
open("sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 j\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
getcwd("/tmp/products", 128)            = 14
mmap(NULL, 2212928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3938d0d000
mprotect(0x7f3938d26000, 2097152, PROT_NONE) = 0
mmap(0x7f3938f26000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7f3938f26000
mmap(0x7f3938f28000, 5184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3938f28000
close(3)                                = 0

stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
open("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 j\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
mmap(NULL, 2212928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3938d0d000
mprotect(0x7f3938d26000, 2097152, PROT_NONE) = 0
mmap(0x7f3938f26000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7f3938f26000
mmap(0x7f3938f28000, 5184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3938f28000
close(3)                                = 0

But the last attempt fails:

stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file
or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("vm-display-X11", 0x7ffd9d22a7a0)  = -1 ENOENT (No such file or directory)
stat("vm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("vm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11", 0x7ffd9d22a790) = -1 ENOTDIR
(Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11.so", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11.dylib", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11.so", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11.dylib", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
write(2, "could not find display driver vm"..., 54could not find display driver vm-display-X11; either:
) = 54
write(2, "  - check that /tmp/products/sqc"..., 92  - check that
/tmp/products/sqcogspur64linux/lib/squeak/5.0-//vm-display-X11.so exists, or
) = 92
write(2, "  - use the '-plugins <path>' op"..., 64  - use the '-plugins <path>' option to tell me where it is, or
) = 64
write(2, "  - remove DISPLAY from your env"..., 42  - remove DISPLAY from your environment.
) = 42

Any idea what I might be missing?

Cheers,

Hans-Martin


Reply | Threaded
Open this post in threaded view
|

Re: Newly built VM not finding its display plugin :-(

fniephaus
 

--

On Mon, Nov 14, 2016 at 12:41 AM Hans-Martin Mosner <[hidden email]> wrote:

Hi, I'm in the process of creating a simple and reproducible automated VM build environment using Docker. My current
docker image basically seems to work, however, I've not been able to run the created executable yet.

I've naively assumed that the shell script "squeak" in directory .../products/sqcogspur64linux would do the right thing,
but it complains that it could not find the display driver: "could not find display driver vm-display-X11".

Do you have all dependencies installed for your platform? 
Especially: libx11-dev/libx11-dev:i386



Fabio
 

The direcory structure in "products" differs a bit from the release VM directory structure, but it looks like it is
supposed to work anyway.

I've done an strace of the process, and it finds and opens the plugin just fine (twice, actually), but just before
writing the error message it seems to want to open it again under various different names, just not the right one...

Here are the relevant strace lines of the first two plugin maps:

stat("sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
open("sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 j\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
getcwd("/tmp/products", 128)            = 14
mmap(NULL, 2212928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3938d0d000
mprotect(0x7f3938d26000, 2097152, PROT_NONE) = 0
mmap(0x7f3938f26000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7f3938f26000
mmap(0x7f3938f28000, 5184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3938f28000
close(3)                                = 0

stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
open("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 j\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=373136, ...}) = 0
mmap(NULL, 2212928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f3938d0d000
mprotect(0x7f3938d26000, 2097152, PROT_NONE) = 0
mmap(0x7f3938f26000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7f3938f26000
mmap(0x7f3938f28000, 5184, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f3938f28000
close(3)                                = 0

But the last attempt fails:

stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or
directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file
or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/home/hmm/Squeak/images/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/vm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11.so", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("/usr/local/lib/libvm-display-X11.dylib", 0x7ffd9d228780) = -1 ENOENT (No such file or directory)
stat("vm-display-X11", 0x7ffd9d22a7a0)  = -1 ENOENT (No such file or directory)
stat("vm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("vm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("libvm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/vm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11.so", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/libvm-display-X11.dylib", 0x7ffd9d22a7a0) = -1 ENOENT (No such file or directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11", 0x7ffd9d22a790) = -1 ENOTDIR
(Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11.so", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/vm-display-X11.dylib", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11.so", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
stat("/tmp/products/sqcogspur64linux/lib/squeak/5.0-/vm-display-X11/.libs/libvm-display-X11.dylib", 0x7ffd9d22a790) = -1
ENOTDIR (Not a directory)
write(2, "could not find display driver vm"..., 54could not find display driver vm-display-X11; either:
) = 54
write(2, "  - check that /tmp/products/sqc"..., 92  - check that
/tmp/products/sqcogspur64linux/lib/squeak/5.0-//vm-display-X11.so exists, or
) = 92
write(2, "  - use the '-plugins <path>' op"..., 64  - use the '-plugins <path>' option to tell me where it is, or
) = 64
write(2, "  - remove DISPLAY from your env"..., 42  - remove DISPLAY from your environment.
) = 42

Any idea what I might be missing?

Cheers,

Hans-Martin