Hello, Genode

I'm trying to understand how env() and env()->parent() work from the source code.
First, I find the body of env function located at:
    genode/base/src/base/env/env.cc

and looks like this:
    namespace Genode {

        /*
         * Request pointer to static environment of the Genode application
         */
        Env *env()
        {
            /*
             * By placing the environment as static object here, we ensure that its
             * constructor gets called when this function is used the first time.
             */
            static Genode::Platform_env _env;

            return &_env;
        }
    }

env() function looks like, at namespace Genode, it returns the pointer of singleton object _env (static Genode::Platform_env _env).
But, when I call env() at different places, it returns different addresses.

For instance,
   - at genode/base/src/core/main.cc
   - at dde_linux/src/drivers/usb/nic/nic.cc,
env() function returns different addresses like the following
   - at genode/base/src/core/main.cc, it returns 801f01a0
   - at dde_linux/src/drivers/usb/nic/nic.cc, it returns 10b716c.

For me, it is very strange, because both functions returns the address of a singleton object _env.
I think I miss some points and appreciate if you fill the gap.


And, one more thing: I was trying to print some debug message at Env *env() function like the following.

        Env *env()
        {
            /*
             * By placing the environment as static object here, we ensure that its
             * constructor gets called when this function is used the first time.
             */
            static Genode::Platform_env _env;
            PDBG("Genode::env() function called");   // my debug message

            return &_env;
        }

And, when I run the genode, it always halt at core and child init is not running.
Do you have any clues?

Thanks always,
Jaeyong