Well there's your problem (best mythbusters voice).
WP tries to set it as /wp-admin when there's no define.
(had to hack wp-settings.php to show me what it was doing)
That doesn't make any sense. What does the SITECOOKIEPATH get set to?
Look at the code right there:
define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' );
If your siteurl is http://example.com/blog , then your SITECOOKIEPATH will be /blog and your ADMIN_COOKIE_PATH will be /blog/wp-admin .
Do you have two entries in the options table for your siteurl or something weird like that?
I now think this is because of legacy installs that have $wp->sitecookiepath stored in the db.
What? There is no such thing as $wp->sitecookiepath, and nothing to read anything of the sort out of the database. Those words make no sense.
WordPress is essentially failing to check for a valid path when calculating the new constant introduced in 2.6 - it's an oversight I can easily forgive as I might easily make such a mistake myself.
Again, you're just stringing random words together in a nonsensical order. If the siteurl is not set correctly, then yes, it will break. But so will the entire rest of the site. The siteurl is critical to everything in the whole of WordPress.