The output indicates it's working:
[serial
set routedir drive0/var/gpsapp/routes (strlen 24)
match visual inside 0 passed [gpsapp]
routedir=drive0/var/gpsapp/routes

the line including "(strlen 24)" says it's correctly parsing the config.ini and setting routedir

from the shell, again, what does

ls -ld /drive0 /drive0/var /drive0/var/gpsapp /drive0/var/gpsapp/routes
give?

I can make another version with different debugging but it's not a config parsing problem.