I think this is a known issue. The problem is that Unity is trying to resolve the most complicated constructor (most parameters) for ServiceProvider.
public ServiceProvider(Uri uri)
Now Unity tries to resolve Uri. It iterates over the constructor until it hits this constructor:
public System.Uri(System.Uri baseUri, System.String relativeUri, System.Boolean dontEscape)
Now Unity needs to resolve the first constructor parameter which is another Uri and the process repeats leading to infinite recursion and a StackoverflowException.
A similar issue is documented in the issue log: circular dependencies may cause stack overflow.
As I think you found out, the workaround is to configure the container to resolve the Uri class. Or you could configure Unity to use your default constructor as the default:
Container.RegisterType<IServiceProvider, ServiceProvider>(new InjectionConstructor());
Enterprise Library support engineer