This little excerpt from the bash man page explains the reason I just wasted 2 hours:
Note that the order of redirections is significant. For example, the command
ls > dirlist 2>&1directs both standard output and standard error to the file dirlist, while the command
ls 2>&1 > dirlistdirects only the standard output to file dirlist, because the standard error was duplicated as standard output before the standard output was redirected to dirlist.