On Ubuntu or Debian machines, if session.save_path is not set, then session files are saved in /var/lib/php5
by default.
If you check the hhvm logs in /var/log/hhvm/error.log
there is an error
\nFatal error: Failed to initialize storage module: user (path: /var/lib/php5) in /var/www/html/commerce-demo/includes/session.inc on line 287
Drupal/PHP fails to create a session in the drupal_session_start()
function because the default location to store the session files /var/lib/php5
does not exist or is not known within our setup with hhvm.
In my Drupal settings.php file I added to the bottom
ini_set("session.save_path", "");
This resets the path to ""
(an empty string), by default this evaluates to the temp folder of the system.
This helped me: http://stackoverflow.com/questions/4927850/location-for-session-files-in-apache-php
To find the current session save path, you can use session_save_path()
(Get and/or set the current session save path).
Why drupal failed to create only the sessions related to the checkout page is not clear to me, but now it works ;)