Hi Rick,
I've spent hours and hours on this, but finally tracked down the root of the problem.
first though, something that's wrong that wasn't causing the gpf, but which wil cause you pain later on. Your global variable (declared in the dictionary) called Glo:UserFileName needs to have the THREAD attribute turned on.
Second - the SelfService extension (which is designed to be added to an exe) should be removed from the DLL. Actually I'll make a version of SelfService (3.38) which "goes quiet" in a DLL to avoid this problem in the future, but because of the way SelfService deals with threads, this was the root of the GPF when accessing a file.
cheers
Bruce