The fact that it can't find boundaries for complicated functions, and you should give xmin and xmax in those situations, is already mentioned in the documentation (galsim/random.py, lines 63 to 65).  

I'd originally intended xmin and xmin to always be passed with functions, but "xmin and xmax are optional, unless you're passing a callable function, but actually it's STILL optional if that function happens to be a LookupTable" seemed overly complicated, so I figured a dumb boundary finder and caveat, um, coder?  But we could remove this if it seems more likely to cause problems than solve them.  

I've pushed some boundary-finding unit tests (checks that, given a Gaussian, the found boundaries are >5 sigma; checks that, given a LookupTable, both the DistDeviate and the LookupTable have the bounds of the original array).  As part of making those tests work, you can now access what a DistDeviate object dd thinks its min and max abscissa values are via dd.x_max and dd.x_min, like the LookupTable (which resulted in a change for the config stuff as well).  And the keyword names have been changed to x_min and x_max to fit with those other uses too.