Odd shared library-global variable problem on Mac OS X?
Jesse Peterson <[email protected]> Fri, 15 Mar 2013 00:14:55 -0700
| Newsgroups | gmane.mail.spam.dspam.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello, After having generally good success with preliminary testing with dspam I've run into an issue that after a few hours of delving deeper on appears to either be a bug or a platform support issue. I'm compiling on Mac OS X 10.6.8 (old, I know) with the x86_64 architecture and am having a weird issue with the preferences C module (I think). Version 3.10.2. Here's what I'm seeing: When executing dspam from my MTA (postfix) using the "LDA proxy" method dspam won't accept the user's preferences because it complains they're "disallowed". Like so: dspam[35366]: Ignoring disallowed preference 'trainingMode' dspam[35366]: Ignoring disallowed preference 'spamAction' dspam[35366]: Ignoring disallowed preference 'spamSubject' dspam[35366]: Ignoring disallowed preference 'statisticalSedation' dspam[35366]: Ignoring disallowed preference 'enableBNR' dspam[35366]: Ignoring disallowed preference 'optIn' dspam[35366]: Ignoring disallowed preference 'optOut' dspam[35366]: Ignoring disallowed preference 'showFactors' dspam[35366]: Ignoring disallowed preference 'enableWhitelist' dspam[35366]: Ignoring disallowed preference 'signatureLocation' dspam[35366]: Ignoring disallowed preference 'dailyQuarantineSummary' Now one's first reaction to this would be: "well, of course, you don't have any AllowOverrides in your dspam.conf" to which I'd say, no, actually I do. In fact this is the default (or at least very little modified) dspam.conf as installed by the Makefiles (which include the AllowOverrides). Yes, I've checked many times: they are there, I assure you. So after checking that about a million times (since that seemed to be the issue) I started looking further. I eventually compiled with verbose logging, turned on logging, and reviewed the logs. This surprised me: 32189: [03/14/2013 20:00:39] Loading preferences from dspam.conf 32189: [03/14/2013 20:00:39] match attribute 'AllowOverride' with value 'trainingMode' 32189: [03/14/2013 20:00:39] find attribute 'AllowOverride' 32189: [03/14/2013 20:00:39] _ds_find_attribute(): NULL config 32189: [03/14/2013 20:00:39] -> match: not found attribute 'AllowOverride' 32189: [03/14/2013 20:00:39] match attribute 'AllowOverride' with value 'spamAction' 32189: [03/14/2013 20:00:39] find attribute 'AllowOverride' 32189: [03/14/2013 20:00:39] _ds_find_attribute(): NULL config 32189: [03/14/2013 20:00:39] -> match: not found attribute 'AllowOverride' This was quite odd. Then looking at the code, specifically src/pref.c's _ds_pref_aggregate() (around line 55) which leads to src/config_shared.c _ds_find_attribute() (around line 47) where these errors emitted. So it appears as though the global variable agent_config is NULL when pref.c does the preference "aggregation" runs. THe code's logic essentially pretends that that means there is no AllowOverrides and thus preferences aren't used. So, not quite sure what to do with this on a hunch I compiled using static libraries (configured with --disabled-shared) and viola - dspam respected my user preferences. Presumably it was able to see the agent_config variable. I haven't verified but I think dspam (where agent_config is set) sets agent_config loads libdspam which has _ds_pref_aggregate(). I think, but am not sure, that's what this thread is about, too, as it is also on Mac OS X (macports): http://sourceforge.net/mailarchive/message.php?msg_id=29506400 I'm willing to help track this down further if folks could point me in the right direction. Happy to file a bug if wanted, too. Thoughts? Thanks, - Jesse ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar