On 20/03/2014, at 7:28 AM, mk-li...@email.de wrote:
> On 19 Mar 2014, at 06:29 , Thomas Lübking <thomas.luebk...@gmail.com> wrote:
>> There seems a known issue reg. multithreaded libxml2 [1], but since Marko 
>> was the reporter, i simply ruled it out being the remaining one.
> 
> I doubt it was a libxml2 issue, since the corresponding poster wrote
> —
> <p>Hi on windows we had a similar crash.</p>
> <div>The problem was in libxml2, when builded with multithread 
> support.Disabling multithread fixed it.</div>
> —
> 
> The crash I described back then happened with KMyMoney, but did occur for any 
> other KDE software arbitrarily every now and then.
> 
> I think in order to reproduce the error I’d also need to build stuff highly 
> parallel with all 8 cores and in an an endless loop, but I’d need to get 
> familiar with parallel and stuff alike, I am afraid…
> 
> Well, let’s see what Ian can come up with once he’s done with partying his 
> birthday. ;-)

Heh!  Well, I am not any kind of KDE genius and kdoctools is foreign territory 
for me.
It's hard enough for me to write that .docbook format of documentation … :-)

I tried a little script to get meinproc4 to fail by executing several copies in 
parallel.

    for game in killbots kjumpingcube konquest kpat kubrick kgoldrunner palapeli
    do
        echo meinproc4 for $game
        cd /kdedev/games/$game/doc && /opt/local/bin/meinproc4 --check --cache 
/kdedev/build/games/$game/doc/index.cache.bz2 
/kdedev/games/$game/doc/index.docbook &
    done

IOW, run meinproc4 for seven games Handbooks at once.  The main command is what
eventuates from CMake and make when you are installing documentation.  /keddev
is my KDE development area and /opt/local/bin is where MacPorts puts utilities 
(though
not GUI applications, which require to be installed in a special way on Mac OS 
X).

It was all over in a second or two, with a spike of about 1.5 cores on Apple's
Activity Monitor.  No crashes.  But then meinproc4 never fails for me.

Then I wrapped a "do forever" loop around the above --- and then it crashed, 
but it was
hardly a fair test: writing seven output files an unknown number of times at 
once.

So I think we can discount the concurrency-problem theory.

In any case, I had a look at
https://trac.macports.org/attachment/ticket/41326/main.log a huge log file 
(25Mb) from
a crash of meinproc4.  I do not know what this run was doing (there seems to be 
no replay
of the MacPorts command that started it), but there seem to be multiple 
commands that
are aimed at building meinproc4 itself.  What really happened?

Anyway, there is just one attempt to execute meinproc4, AFAICS, and that is 
right near
the end of that huge log file.  So no concurrency.  Anyway, the one backtrace 
we have
(not from this run BTW) shows meinproc4 failing on its one and only call to 
KGlobal::locale();
at line 109 of file meinproc.cpp.  That is part of meinproc4's initialisation, 
before it starts
processing any input.

That call to KGlobal::locale(); seems an odd one, KDE guys.  That function is 
supposed to
return a locale (KLocale *), but here it is executed as a procedure, ignoring 
the return
result.  I can only conclude that the code is being executed for its 
side-effects, see:
http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/kglobal_8cpp_source.html#l00144

Macports guys, in https://trac.macports.org/attachment/ticket/41326/main.log,
meinproc4 is actually running inside a script called meinproc4.shell, which I 
think may be
generated by MacPorts.

I wonder if meinproc4 has not been fully installed yet (it seems to be being
built earlier on in the run).  If so, I wonder if it is running from somewhere 
that is not its
usual install location (i.e. not /opt/local/bin/meinproc4) or maybe it has been 
deprived
of its usual KDE environment setup in some way, so that is why it cannot find a 
locale.

One final idea.  I see that there is a version of meinproc4 called 
meinproc4_simple,
which the KDE translators use for some purpose which I cannot quite make out.
Anyway, it appears to be a special-purpose version of meinproc4 and it is 
essentially
a Qt-only application.

I wonder if we could legislate the MacPorts meinproc4 bug out
of existence by making another special-purpose version of meinproc4 that only 
takes
in a .docbook file, checks it and spits out a .cache.bz2 file, thus omitting 
the code where
meinproc4 appears to be crashing in the Apple OS X environment.  That version 
could
then be the one used to create Handbooks across all platforms.

Just a thought.

Cheers, Ian W.


>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<

Reply via email to