Thats the normal behaviour of the apache webserver and not a bug.
You can either use a wildcard (*) in a apache vhost or the IP address. A IP address is always "stronger" then a wildcard. The result is that if you mix IP and * based vhosts, then a website gets redirected to the IP based site.
So the result of this, never mix IP's and * for websites that use the same IP, either use * for all websites that point to a specific IP or use * for all sites. A IP has to be used if you need a ssl certificate, otherwise * is fine as well.
If you like to know the details of how an apache server works, you might want to take a look at the apache server documentation: http://www.apache.org/