csf.cpp doesn't use the gc, nor reference counting in all the CSF objects it allocates. Which means an enormous memory leak.
Either rewrite CSF/XML api to support GCing, and use GCing in csf.cpp, or ditch the GC for that part, and use proper reference counting.
Perhaps even do some performance testing, and see if GCs really _are_ all they're hyped up to be ;)