TODO:
    + 2nd soffice - pages in *everything* - urgh ...
	+ we lost what we didn't need - and ... bang ...

    + re-generate memory.sxw / memory.txt
	+ memory figures are broken without this.

    + Generate a run-time library-dependency picture/chart ...
	+ make it easy to re-generate.

Overall memory usage:

    + savings by size:
	+ 5Mb from .rdb re-work
	+ ~3Mb from i18npool (?)
	    + put all _en in 1 lib, all _es in 1 etc.
	+ 400k - bogus .comment sections
	+ 400k - sndfile etc. bits - & 2 libs on startup
	+ 330k - total Sfx Slot size (etc.)
	    + [ plus some stubs ]
	+ 208k - remove avmedia
	+ 80k - run-time filter cache storage (to OString)
	+ wasted vtable symbols [?]


+ Document load:
	+ do 'on-demand' data conversion for embedded objects [!?]
	+ better quality, better performance etc. [!?]

** Overall source section break down **

Section size breakdown
 code            55808kb - 49%
 linking         16294kb - 14%
 data            13840kb - 13% - excluding .bss
 exceptions      11903kb - 10%
 data relocs      5712kb -  5%
 symbols          1334kb - 1.2%
 debug             737kb - 0.65%
 versioning        470kb - 0.41%
 misc              140kb - 0.12%
 init/fini          12kb - 0.011%
 c/d-tors            8kb - 0.0076%
 Total: 116778352 bytes

.comment - needs binutils to elide identical .comment sections ...

** Best way to see data **

Compile with symbols:

objdump -t libpsp680li.so | grep '\.data'


+ libsw's .data section has a huge scad of:
  from 0x7cf41c - GCC: 4.0.2 ...
  to   0x7d7f9c
    + '.comment' section ... [ hmm ]

Large .data offenders:
 + i18npool.uno.so   - 2967kb
 + libdict_zh	     - 2209kb
 + libdict_ja	     - 1024kb
 + libsw	     -  545kb - **
 + libsc             -  407kb
 + libsd             -  315kb 
 + libpsp            -  310kb - **  - xlat unicode -> MS mapping, 'NO_MAPPERS' ?
 + liblocaledata_others 297kb
 + libxo	     -  262kb - lots of xml tokens & strings
 + slideshow.uno.so  -  211kb - **
 + configmgr2.uno.so -  181kb
 + libtk             -  176kb
 + libdbu	     -  138kb
 + libdbtools        -  121kb

Memory shrinkage: to start 2,553,127 bytes
    + types.rdb ...
    + reduce bogus usage of services.rdb

** Images.zip
    + check the compression algorithms &
      the 'store data behind 0 alpha' state ...

** Real (allocated) memory usage is tiny 
    + code size is large & painful

** Looking at eg. libsvx:
Section size breakdown
 code            5207kb - 54%
 linking         1533kb - 16%
 eh frame?        860kb -  9%
 data             624kb - 6.5%
 data relocs      553kb - 5.8%
 debug            516kb - 5.4%
 exceptions       246kb - 2.6%
 versioning        39kb - 0.41%
 comment           27kb - 0.28%

 Total: 9840975 bytes
> ls -l libsvx680li.so
-rwxr-xr-x  1 michael users 14303406 2005-10-26 16:28 libsvx680li.so

    Why is there a 4MB difference between the some of the section
sizes & the overall size ?


    + memprof shows only ~2.5Mb of 'real' memory usage ...
	+ quick look at shrinking it ...
	+ desktop::Desktop::OpenSplashScreen() 
	    + IntroWindow::IntroWindow - 145k - all gtk+ related

	+ framework::AutoRecovery::implts_readConfig - 130k
	    + filter::config::FilterCache::load ...
		+ filter::config::FilterCache::impl_loadSet
			+ CacheItem hash table ... stl foo ... [124k]

		+ filter/source/config/filtercache.cxx (impl_loadSet):
			(*pCache)[pItems[i]] = ...
			[ hash table ? ]
				+ big old hash table ... [ lots of entries ? ]

Non-shared in memory:

Size/kB	NAME
17,256	svx/...libsvx680li.so
16,354	sw/...libsw680li.so
8,926	/lib/libc.so.6
6,151	svtools/...libsvt680li.so
6,136	xmloff/...libxo680li.so
5,984	offapi/.../types.db
5,329	sfx2/...libsfx680li.so
5,161	instsetoo_native/.../images_industrial.zip
5,107	vcl/...libvcl680li.so
4,416	services.rdb
4,313	toolkit/...libtk680li.so
3,921	i18npool/...i18npool.uno.so
3,789	libicudata.so.26.0
3,523	configmgr/...configmgr2.uno.so
3,344	framework/...libfwk680li.so
1,991	libuno_sal.so.3
1,954	connectivity/...libdbtools680li.so
1,747	comphelper/...libcomphelp4gcc3.so
1,461	basic/...libsb680li.so
1,408	svtools/...libsvl680li.so
1,224	psprint/...libpsp680li.so
1,154	libicui18n.so.26.0
1,101	/usr/lib/libcrypto.so.0.9.7
1,052	/opt/OOInstall/help/en/swriter.db
998	libstlport_gcc.so
994	libdb-4.2.so
973	unotools/...libutl680li.so
962	tools/...libtl680li.so
949	/usr/lib/libstdc++.so.5.0.6
924	/opt/OOInstall/help/en/swriter.ht
878	libucpchelp1.so
858	vcl/...libvclplug_gen680li.so
853	linguistic/...liblng680li.so
842	xmlscript/...libxcr680li.so
827	ucbhelper/...libucbhelper3gcc3.so
819	libicuuc.so.26.0
769	framework/...libfwe680li.so
721	ucb/...ucpgvfs1.uno.so
667	goodies/...libgo680li.so
544	sot/...libsot680li.so
525	basegfx/...libbasegfx680li.so
519	package/...libpackage2.so
487	soffice.bin
485	ucb/...libucpfile1.so
481	libuno_cppuhelpergcc3.so.3
471	/usr/lib/libfontconfig.so.1.0.4
466	/usr/lib/libfreetype.so.6.3.5
461	/opt/gnome/lib/libbonobo-2.so.0.0.0
438	/opt/gnome/lib/libgnomevfs-2.so.0.601.0
407	/lib/libpthread.so.0
406	package/...libxstor.so
385	filter/...libfilterconfig1.so
384	/opt/gnome/lib/libORBit-2.so.0.0.0
376	stoc/...regtypeprov.uno.so
365	/lib/ld-2.3.3.so
361	shell/...gconfbe1.uno.so
354	ucb/...libucb1.so
353	svx/unxlngi4.pro/bin/svx680en-US.res
343	dtrans/...libdtransX11680li.so
330	libsndfile.so.1.0.9
317	framework/...libfwi680li.so
315	/opt/gnome/lib/libatk-1.0.so.0.0.0
290	vcl/...libvclplug_gtk680li.so
272	sw/unxlngi4.pro/bin/sw680en-US.res
269	sax/...sax.uno.so
267	libuno_cppu.so.3
259	/opt/gnome/lib/libgobject-2.0.so.0.400.6
247	/opt/gnome/lib/libgconf-2.so.4.1.0
245	desktop/...libspl680li.so
233	/opt/gnome/lib/libpango-1.0.so.0.400.1
232	stoc/...typemgr.uno.so
231	stoc/...servicemgr.uno.so
230	uui/...libuui680li.so
227	/usr/lib/libldap.so.199.3.4
217	/usr/lib/libssl.so.0.9.7
210	libicule.so.26.0
208	avmedia/...libavmedia680li.so
207	/usr/X11R6/lib/X11/fonts/truetype/thowr___.ttf
204	/usr/lib/locale/en_GB.utf8/LC_CTYPE
203	/lib/libresolv.so.2
192	i18npool/...liblocaledata_en.so
187	extensions/...ldapbe2.uno.so
182	vos/...libvos3gcc3.so
172	framework/...libfwl680li.so
168	svtools/...svtmisc.uno.so
167	stoc/...security.uno.so
158	libreg.so.3
156	/usr/lib/libexpat.so.0.5.0
147	sfx2/unxlngi4.pro/bin/sfx680en-US.res
144	libstore.so.3
141	/lib/libnss_files.so.2
138	/lib/librt.so.1
135	stoc/...uriproc.uno.so
134	/usr/lib/libjpeg.so.62.0.0
131	svtools/...fsstorage.uno.so
127	libjvmfwk.so.3
123	/usr/lib/libcups.so.2
108	stoc/...implreg.uno.so
103	fileaccess/...libfileacc.so
99	stoc/...nestedreg.uno.so
98	stoc/...simplereg.uno.so
96	/usr/X11R6/lib/libICE.so.6.3
95	configmgr/...sysmgr1.uno.so
91	/usr/lib/libsasl2.so.2.0.18
89	/opt/gnome/share/locale/en_GB/LC_MESSAGES/gtk20-properties.mo
83	/usr/X11R6/lib/libXft.so.2.1.1
80	/lib/libcrypt.so.1
77	bridges/...libgcc3_uno.so
70	i18nutil/...libi18nutilgcc3.so
69	/lib/libz.so.1.2.1
66	configmgr/...behelper.uno.so
66	/usr/X11R6/lib/libXext.so.6.4
59	stoc/...typeconverter.uno.so
57	dtrans/...libmcnttype.so
56	/usr/lib/liblber.so.199.3.4
53	/opt/gnome/lib/libpangox-1.0.so.0.400.1
52	shell/...localebe1.uno.so
51	/lib/libdl.so.2
50	/opt/gnome/lib/gtk-2.0/engines/libindustrial.so
47	svtools/unxlngi4.pro/bin/svt680en-US.res
43	stoc/...shlibloader.uno.so
39	/lib/libgcc_s.so.1
39	/usr/X11R6/lib/libXcursor.so.1.0.2
38	sj2/...libj680li_g.so
37	/usr/X11R6/lib/libSM.so.6.0
36	/opt/gnome/lib/memprof/libmemintercept.so
36	/usr/lib/libstartup-notification-1.so.0.0.0
34	/usr/X11R6/lib/libXi.so.6.0
33	/usr/X11R6/lib/libXrender.so.1.2.2
32	/opt/gnome/share/locale/en_GB/LC_MESSAGES/gtk20.mo
31	svx/unxlngi4.pro/bin/ofa680en-US.res
31	/usr/lib/libpopt.so.0.0.0
29	libportaudio.so.0.0.18
28	/opt/gnome/lib/libORBitCosNaming-2.so.0.0.0
23	libjvmaccessgcc3.so.3
22	libuno_salhelpergcc3.so.3
22	/opt/gnome/lib/libpangoxft-1.0.so.0.400.1
21	svx/unxlngi4.pro/bin/ooo680en-US.res
21	/usr/lib/gconv/gconv-modules.cache
20	/usr/X11R6/lib/libXxf86vm.so.1.0
18	/opt/gnome/lib/libgthread-2.0.so.0.400.6
13	vcl/unxlngi4.pro/bin/vcl680en-US.res
13	/usr/X11R6/lib/libXrandr.so.2.0
13	/opt/gnome/lib/libgmodule-2.0.so.0.400.6
12	/opt/OOInstall/program
11	desktop/unxlngi4.pro/bin/dkt680en-US.res
9	/opt/gnome/lib/pango/1.4.0/modules/pango-basic-fc.so
7	/usr/X11R6/lib/X11/locale/lib/common/xlcUTF8Load.so.2
6	/usr/lib/gconv/ISO8859-1.so
2	/usr/lib/locale/en_GB.utf8/LC_TIME
1	/usr/share/locale/en_GB/LC_MESSAGES/libc.mo


** SDI Slots
    * sw:

007b2400 l     O .data  00001194              aSwBaseShellSlots_Impl
007b50a0 l     O .data  00001194              aSwDrawTextShellSlots_Impl
007b92c0 l     O .data  000039a8              aSwTextShellSlots_Impl
007c6920 l     O .data  000037c8              aSwWebTextShellSlots_Impl
007caf60 l     O .data  00001824              aSwWebViewSlots_Impl
007ccaa0 l     O .data  00001f2c              aSwViewSlots_Impl

    + looks like the .sdi slot info has a large cost ... ]

aSwBaseShellSlots_Impl eg.
    sw/swslots.hxx:
#define SFX_SLOTMAP_ARG(ShellClass) static SfxSlot __FAR_DATA a##ShellClass##Slots_Impl[] =
    + memory chew is:
	+ [SfxSlot]:
	    + 2+2+4+4+2+2+4+4+4+4+4+4+4+4+2+4+4
	    + == 5*2 + 12*4 = 58bytes [say 60 ;-]
	+ how many slots ?
	    + 1355 in swslots.hxx
		+ 81k
	    + Total -5111 == 306K
grep SFX_NEW_SLOT_ARG */unxlngi6.pro/inc/*slots*.hxx | wc -l
5111
#define SFX_ARGUMENTMAP(ShellClass) static SfxFormalArgument __FAR_DATA a##ShellClass##Args_Impl[] =
	+ SfxFormalArgument == 10bytes.
grep SFX_ARGUMENTMAP */unxlngi6.pro/inc/*slots*.hxx | wc -l
2396
	=> 24k


** libsvx - the bloat-king ...

    + Why / How could it possibly be so big ?
    + what of it isn't used much ?
	+ cutting code out is hard:
	+ if *something* in libsw needs it ...
	    + what is the solution ?
	    + yet more modularity ?
	    + UNO components ?

    + Can we have 'base' pieces in svx ?
	+ and impl. pieces elsewhere ?
	+ code break-down by directory size ...
	    + code size ? file size ?

$ cat > pat
*.src
$ du -b -X ./pat * | grep -v '/' | sort -n

6212    init
18199   gengal
22147   mnuctrls
32823   src
38283   svxlink
40565   intro
44856   stbctrls
51757   unogallery
66194   toolbars
100726  unodialogs
117713  svrtf
131409  xml
154090  options
173234  outliner
349369  gallery2
400116  unoedit
429906  tbxctrls
502922  fmcomp
508433  sdr
589702  customshapes
612951  xoutdev
678797  items
685524  unodraw
695427  accessibility
724752  engine3d
741794  inc
1066371 msfilter
1400303 editeng
1656212 form
2666721 svdraw
5410880 dialog

	+ it looks like most of the size is in dialog/

+ Can we split a load of code out of libraries ?
    + could we do 'clever' things in the linker ?
	+ 'in-another-shlib' feature ?
	    + everything not on startup - 'in another' ...
		+ or ... an 'LD_PRELOAD' full of stubs ?
    + want to hook XYZ ?
	+ fine to 'link' to it, as long as we don't 'use' it ...
	+ which of these dialogs are really used ?
	+ which are really important ?

*** Dialogs
    + if all the _application_ logic has split
      out 'abstract' dialogs
	+ eg. writer, calc etc.
	+ surely - we can now split the dialog bases out of svx ...
	    + do we win ? can we keep them out of startup ?
    + chop dialogs.lib & form.lib out:
	+ items, form, dialogs

*** If we can't pull out what is not used,
    *** Can we pull in what is used ?
	*** 'libsvx-startup.so' ? ... ;-)


+ Gun for [ both in libsvx core ]:

    + 'Form' logic - how much API does that expose ?
	+ looks somewhat uno-ized anyway ...

	+ Most of the form headers -appear- to be internal ...
	    + ... hmm ...
    + Dialog logic - ditto.

cui - what is that ?
    + cuiexp.obj
    + dlgfact.obj

Section size breakdown
 code            5207kb - 37%
 linking         1533kb - 11%
 exceptions      1107kb - 7.9%
 data             611kb - 4.4%
 data relocs      553kb -  4%
 debug            516kb - 3.7%
 versioning        39kb - 0.28%
 comment           27kb - 0.2%
 bss               13kb - 0.094%

    + lots of symbols ...

** Sound foo

    + Sound bits:
	+ bin libraries from search path
	+ size savings:
		330k - libsndfile.so.1.0.9
		29k - libportaudio.so.0.0.18
	+ framework's 'soundhandler' appears unused.
	    + no hits for 'SoundHandler' in *.so
	    + (except in QA project)
	+ sd needs a little work ...


Nasty:
    + debug why existing sound foo not working ...
    + add dummy for Sound::IsSoundFile [...]
	+ can we use avmedia ?
	+ should we move the audio stuff here ?
	+ WTF. is that being linked / used at startup ?
	    + it's a crazy thing ! ;-)
		+ [ helper code presumably ]
	+ avmedia needs a head-less player service
	    + it needs to work nicely ;-)
	    + needs to be able to detect media files ...


    Binary file libsd680li.so matches
	sd/source/ui/dlg/filedlg.cxx - IsSoundFile
	sd/source/ui/views/drviewse.cxx - 

    Binary file libsc680li.so matches - 'IsSoundFile'
	sc/source/ui/view/tabvwshg.cxx
    Binary file libsw680li.so matches - 'IsSoundFile'
	sw/source/ui/shells/textdrw.cxx - cut/paste 'DispatchURLInternal' [hmm]

Ok:
    Binary file libbasctl680li.so matches
    Binary file libsb680li.so matches
    Binary file libsts680li.so matches
    Binary file libsvt680li.so matches
    Binary file libvcl680li.so matches
    Binary file libsvx680li.so matches
    Binary file libfwk680li.so matches


** i18npool foo:

    + source/registerservices.cxx:
	+ registers loads of _ja etc. cruft.
	    + split into a 'western.so' ? - easy to do ...
	    + but where is the size data ? ...
		+ LocaleData ?
	+ The Localedata:
	    + source/localedata/
	    + pDLL
	    + 'getFunctionSymbolByName' etc.
		+ liblocaledata_en
		    + exports lots of symbols.
	    + *why*
		+ liblocaledata_others loaded ?
		+ -en- is way smaller ...

	    + hack registry / services foo ..

    + split out Asian bits ...
	+ copy svx/source/dialog/makefile.mk
	
	+ calc 'break-iterator' sizes ...
	    + generated OpenOffice_icu_dat.c stuff ?
	    + 'OpenOffice_dict_word_brk' etc.

00075840 l     O .rodata        000065f8              OpenOffice_dict_word_brk
0006f140 l     O .rodata        000066f8              OpenOffice_dict_word_hu_brk
0007be40 l     O .rodata        00006f80              OpenOffice_edit_word_brk
000610e0 l     O .rodata        00007ec8              OpenOffice_count_word_brk
00082dc0 l     O .rodata        0000ac70              OpenOffice_line_brk
00068fc0 l     O .rodata        00006180              OpenOffice_dict_word_ca_brk

Binary file OpenOffice_dict_word_brk.o matches
Binary file OpenOffice_icu_dat.o matches


+ The com.sun.star.i18n.IndexEntrySupplier
	+ not used at startup / in euro locales [ apparently ]
+ i18n.TextConversion
	+ ditto ...


+ Why - no i18n services activated ?
    + or are they ?

What we load on startup:

'com.sun.star.i18n.BreakIterator'
'com.sun.star.i18n.BreakIterator_en'
'com.sun.star.i18n.BreakIterator_en_US'
'com.sun.star.i18n.BreakIterator_Unicode'
'com.sun.star.i18n.Calendar_gregorian'
'com.sun.star.i18n.CharacterClassification'
'com.sun.star.i18n.CharacterClassification_en'
'com.sun.star.i18n.CharacterClassification_en_US'
'com.sun.star.i18n.CharacterClassification_Unicode'
'com.sun.star.i18n.Collator'
'com.sun.star.i18n.Collator_alphanumeric'
'com.sun.star.i18n.Collator_en_alphanumeric'
'com.sun.star.i18n.Collator_en_US_alphanumeric'
'com.sun.star.i18n.Collator_Unicode'
'com.sun.star.i18n.LocaleCalendar'
'com.sun.star.i18n.LocaleData'
'com.sun.star.i18n.NumberFormatMapper'
'com.sun.star.i18n.Transliteration'

'IndexEntry' - unused ...

+ Collator - interface bits.
+ LocaleData - interface bits.


i#57229

31770 write(2, "CreateInstanceWithContext \'com.sun.star.i18n.Transliteration\'\n", 62) = 62
31770 write(2, "CreateInstanceWithContext \'com.sun.star.loader.SharedLibrary\'\n", 62) = 62
31770 write(2, "CreateInstanceWithContext \'com.sun.star.i18n.LocaleData\'\n", 57) = 57
31770 mmap2(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x46abf000
31770 mmap2(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x46acf000
31770 mmap2(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x46adf000
31770 mmap2(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x46aef000
31770 mmap2(NULL, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x46aff000
31770 write(2, "CreateInstanceWithContext \'com.sun.star.loader.SharedLibrary\'\n", 62) = 62
31770 write(2, "CreateInstanceWithContext \'com.sun.star.loader.SharedLibrary\'\n", 62) = 62
31770 open("./tls/i686/sse2/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./tls/i686/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./tls/sse2/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./tls/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./i686/sse2/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./i686/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./sse2/libi18npool_asian.uno.so", O_RDONLY) = -1 ENOENT (No such file or directory)
31770 open("./libi18npool_asian.uno.so", O_RDONLY) = 34
31770 read(34, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\251\1\0004\0\0\0\0\225/\0\0\0\0\0004\0 \0\5\0(\0\"\0\37\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\370\201\36\0\370\201\36\0\5\0\0\0\0\20\0\0\1\0\0\0\370\201\36\0\370\221\36\0\370\221\36\0\30\0\21\0p!\21\0\6\0\0\0\0\20\0\0\2\0\0\0\220\210\36\0\220\230\36\0\220\230\36\0H\1\0\0H\1\0\0\6\0\0\0\4\0\0\0P\345td\34\310\35\0\34\310\35\0\34\310\35\0004\34\0\0004\34\0\0\4\0\0\0\4\0\0\0Q\345td\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\4\0\0\0\257\3\0\0\354\1\0\0"..., 512) = 512
31770 fstat64(34, {st_mode=S_IFREG|0755, st_size=3327460, ...}) = 0


#0  0x408824c7 in cppu::loadSharedLibComponentFactory () from ./libuno_cppuhelpergcc3.so.3
#1  0x42077ff3 in component_getFactory () from /nld/suse-opt/OOInstall.normal/program/shlibloader.uno.so
#2  0x4087b828 in cppu::ORegistryFactoryHelper::createModuleFactory () from ./libuno_cppuhelpergcc3.so.3
#3  0x4087bcb5 in cppu::ORegistryFactoryHelper::createInstanceEveryTime () from ./libuno_cppuhelpergcc3.so.3
#4  0x4087a24f in cppu::OSingleFactoryHelper::createInstanceWithContext () from ./libuno_cppuhelpergcc3.so.3
#5  0x4087a307 in cppu::OFactoryComponentHelper::createInstanceWithContext () from ./libuno_cppuhelpergcc3.so.3
#6  0x4087a486 in cppu::OSingleFactoryHelper::createInstance () from ./libuno_cppuhelpergcc3.so.3
#7  0x4087a55d in cppu::OFactoryComponentHelper::createInstance () from ./libuno_cppuhelpergcc3.so.3
#8  0x45688bd9 in loadBody (xSMgr=@0x46abc184, implName=@0xbf8be3a8, body=@0x46abc118)
    at /nld/opt/suse-OpenOffice/src680-m133/i18npool/source/transliteration/transliterationImpl.cxx:612
#9  0x45688e74 in com::sun::star::i18n::TransliterationImpl::loadModuleByName (this=0x46abc0f8, implName=@0xbf8be3ec, body=@0x46abc118, 
    rLocale=@0x46abbd80) at /nld/opt/suse-OpenOffice/src680-m133/i18npool/source/transliteration/transliterationImpl.cxx:632
#10 0x45686c01 in com::sun::star::i18n::TransliterationImpl::loadModule (this=0x46abc0f8, modType=1280, rLocale=@0x46abbd80)
    at /nld/opt/suse-OpenOffice/src680-m133/i18npool/source/transliteration/transliterationImpl.cxx:216
#11 0x40647421 in utl::TransliterationWrapper::loadModuleImpl () from ./libutl680li.so
#12 0x40647545 in utl::TransliterationWrapper::loadModuleIfNeeded () from ./libutl680li.so
#13 0x400a0785 in vcl::I18nHelper::~I18nHelper () from ./libvcl680li.so
#14 0x400a0905 in vcl::I18nHelper::MatchString () from ./libvcl680li.so


** VM wasteage **
	+ pthread_attr_set_stacksize (&attr, stack_size);
		+ pthread_create (&attr) etc...
	    + sal/osl/unx/thread.c - 

static gulong g_thread_min_stack_size = 0;

#ifdef _SC_THREAD_STACK_MIN
  g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0);
#endif /* _SC_THREAD_STACK_MIN */

#ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE
  if (stack_size)
    {
      stack_size = MAX (g_thread_min_stack_size, stack_size);
      /* No error check here, because some systems can't do it and
       * we simply don't want threads to fail because of that. */
      pthread_attr_setstacksize (&attr, stack_size);
    }
#endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */

       Target threads:
       + need a 'push-policy' type thing ...
	    + push-thread-stack-policy, pop-thread-stack-policy...
**            desktop::OfficeIPCThread::run ()
		    + desktop/source/app/officeipcthread.hxx
			vos::OThread ...
			pThread->create() etc.
**	      X11SalInstance::CreateSalSession ()
		    + vcl/unx/source/app/sm.cxx /osl_createSuspendedThread/
	      vos::OTimerManager::run ()
		    + looks like a mess ...
		    + 'onShot' could do anything => do not shrink stack

#0  0x41000fb8 in poll () from /lib/tls/libc.so.6
#1  0x441894e8 in ?? () from ./libdtransX11680li.so
#2  0x441895af in ?? () from ./libdtransX11680li.so
#3  0x408e2ea4 in osl_thread_start_Impl () from ./libuno_sal.so.3
#4  0x40d6c107 in start_thread () from /lib/tls/libpthread.so.0
	    + where does this thread come from ?

