Stuff Michael Meeks is doing |
This is my (in)activity log. You might like to visit my employer Novell which is an amazing company, and also Dell who in days of yore provided me with a free laptop for Gnome development / conferences. Also if you have the time to read this sort of stuff you could enlighten yourself by going to Unraveling Wittgenstein's net or if you are feeling objectionable perhaps here. You can also burn useful hacking time by having a look at the logs from my Novell/GNOME friends:
The Alan Cox (en) Federico Mena Quintero Nat Friedman Miguel de Icaza George Lebl Planet-Gnome
2008-05-09lzma-alpha-devel and
deltarpm on my old server system to make an applydeltaiso
that can operate on the new openSUSE ISOs: failed, bother. Time to upgrade
that system to an upgradeable system.
At this point you may be asking, "How about the important tasks at the top of the list, that one never does?" Admittedly, there is a potential problem here.As a perennial procrastinator, this is pure gold: the brief paper on perfectionsm, also invaluable: Philosophers' - who would be without them ?
zypper dup - still unreasonably pleased by it's general
sexiness, apparently born of long suffering.
zypper dup working so nicely.
svn://svn.valgrind.org/valgrind/branches/OTRACK_BY_INSTRUMENTATION
work that can pin-point long after the fact, where the dangerous
uninitialized memory that you branch on was allocated & thus give
much faster bug location.
dbus-daemon-launch-helper appears not to launch anything;
apparently a 'security' feature, bother.
svn: This client is too old to work with working
copy '.'; please get a newer Subversion client everywhere; if only
there were some 'downgrade' feature.
NetworkManager-novellvpn-gnome, which I hadn't
realised is in the public channel these days (making life unfeasibly easy).
/dev/disk/by-id/scsi-SATA<essay here>-part1etc.
Eventually installed 11.0 Alpha2 and set off an update to factory.
http://www.gnome.org/~michael/git/dbind.git/
that allows more friendly use of structured types, for a method of type:
struct TeamName { string id; string name; string url; } array>TeamName< GetTeamList();typedef struct { char *name, *id, *url; } TeamSpace;
...
GPtrArray *spaces;
dbind_context_method_call (ctx, NULL, DESKICE_PATH, DESKICE_NAMESPACE,
"GetTeamList", &error,
"=>a(sss)", &spaces);
for (i = 0; i < spaces->len; i++) {
TeamSpace *space = spaces->pdata[i];
fprintf (stderr, "\t%d: %s, %s, %s\n", i, space->name, space->id, space->url);
}
#define g_return_if_fail(expr) G_STMT_START{ (void)0; }G_STMT_END #define g_return_if_fail(expr) G_STMT_START{ if (G_UNLIKELY (!(expr))) return; }G_STMT_END "You shall not covet your neighbor's house. You shall not covet your neighbor's wife, or his manservant or maidservant, his ox or donkey, or anything that belongs to your neighbor."There are several simple points to make here:
That souls have no discriminating hue,
Alike important in their Maker's view;
That none are free from blemish since the fall,
And love divine has paid one price for all.
Sun didn't just make vague statements to me about OpenSolaris; they made promises about it being an open development project. That's the only way they could get someone like me to provide free labor for their benefit. Given Sun's recent track record on breaking promises, another one doesn't surprise me at all. ... Sun gave up its right to make arbitrary decisions regarding the phrase "OpenSolaris" as part of its public agreement with the community in the form of the Charter. ... Sun agreed that "OpenSolaris" would be governed by the community and yet has refused, in every step along the way, to cede any real control over the software produced or the way it is produced, ... Rather than be honest about it and restructure the community to correspond to this MySolaris style of over-the-wall development, Sun prefers to lie to the external community members while ignoring their input. Yes, Sun has the legal right to make that decision, just as it has a legal right to dissolve the charter and start over with a new governance model. The choices being made are NOT the problem. The problem is the way that the choices are being made WHILE, at the same time, portraying the project in public as a community-driven effort. ... Sun should move on, dissolve the charter that it currently ignores, and adopt the governing style of MySQL.
Sun is making decisions "for" the community with no regard to the membership or Governing Board ... Sun is holding all the keys and while I trust 99% of the Sun employees involved in the community, the fact remains that it would seem that none of them had a hand in this decision ... OpenSolaris as it was conceived by the community is a sham. ... we have open source but we don't have open development. Sun has done an admirable job with releasing code, but Sun's track history in the arena of open development efforts with the free software community has been abysmal ... the MySQL model, which I refer to as "glass house development", that is, you can look in at whats going on but you're not part of the action.
| task | before | after |
|---|---|---|
| pagein | 3.4sec 93Mb | 2.6sec 73Mb |
| soffice.bin | 1.2sec 10Mb | 2.7sec 23Mb |
| total | 4.6sec 103Mb | 5.3sec 96Mb |
fbCompositeCopyAreammx bother, more investigation later.
http://download.opensuse.org/repositories/home:/srinidhi:/evolution-unstable/openSUSE_10.3/i586/
and the Evo team are fixing bugs fast.
X -query foo to
work - gdm reports WARNING: gdm_xdmcp_handle_manage: Failed
to look up session id random-number - irritating in
the extreme.
| variant | startup bindings |
|---|---|
| current | 91300 |
| -Bsymbolic-functions | 63600 |
| -Bsym + vtrelocs | 58100 |
extern SVT_DLLPUBLIC sal_Char const SVTOOLS_CONSTASCII_DECL( sHTML_S_aacute, "aacute" );( sizeof "sHTML_S_" + sizeof (relocation) ) * ( num-references + 1 )
and we loose performance: 2400 unique named relocations, searched across 50+
shared libraries: ~0.8% of OO.o CPU time on startup. And all in the name of
efficiency. Unfortunately, the technique dates back to the dawn of
time, (in cvs history terms), so it's hard to discern the intention. I wonder
where else it's used.
Anyhow, the 'best' fix (to save the optimisation) is to export
one symbol, s_HTML_Strings that is an enumerated array of strings
#define sHTML_S_aacute s_HTML_Strings[eHTML_S_aAcute]
type
thing. But for now, some search/replace action is perhaps easier.
/proc/<pid>/mem
looks like just what you want, until you try to use it - you have to
pread the addresses out. Dug at
cryopid for some stealable code, before giving up. Presumably manual
fun and dump binary memory filename start_addr end_addr
in gdb is the best that can be done easily.
| variant | size | unique named relocs | fn / thunk unique named relocs |
|---|---|---|---|
| current | 10154324 | 10375 | 6650, 1718 |
| -Bsymbolic-functions | 10020556 | 3891 | 1404, 481 |
| -Bsym + vtrelocs | 9840180 | 2135 | 37, 0 |
echo "0" > /proc/sys/kernel/randomize_va_space.
Found I wasn't linking the new libsvx correctly, fixed that. Of
course the real benefit of vtrelocs is (having switched virtual
function calls to going via the relevant vtable) not exporting any
virtual symbols / thunks; but that's for the future.
--disable-bootstrap is the solution, nice.