Using pwd -L inside the chpwd_functions hook inside zsh returns an invalid path. Here are some steps to reproduce this:

function print_dir() { pwd -L } ;
chpwd_functions=(print_dir) ;
mkdir -p /tmp/chdir-test/symbolic-links/ ;
mkdir -p /tmp/chdir-test/actual-directories/folder1 ;
mkdir -p /tmp/chdir-test/actual-directories/folder2 ;
ln -s /tmp/chdir-test/actual-directories/folder1 /tmp/chdir-test/symbolic-links ;

# This works fine:

cd /tmp/chdir-test/symbolic-links/folder1 ;
# >> /tmp/chdir-test/symbolic-links/folder1

# This prints a path that does not exist (try it with cd!)

cd ../folder2 ;
# >> /tmp/chdir-test/symbolic-links/folder2

# This works fine

pwd -L ;
# >> /tmp/chdir-test/actual-directories/folder2

Thanks,
Ajeet D'Souza