Re: threading

From: Marc Santhoff <M.Santhoff(at)web.de>
Date: Wed, 26 May 2010 23:24:01 +0200

Am Mittwoch, den 26.05.2010, 22:53 +0200 schrieb Bernd Walter:
> On Wed, May 26, 2010 at 10:25:02PM +0200, Marc Santhoff wrote:
> > Am Mittwoch, den 26.05.2010, 19:24 +0200 schrieb Marc Santhoff:
> > > Moin,
> > >
> > > ich habe mitbekommen, daß FreeBSD mittlerweile verschiedene
> > > Systembibliotheken für Threading benutzt. Richtig beschäftigt habe ich
> > > mit dem Thema bezüglich FreeBSD aber nicht. Kann das bitte jemand in
> > > Kurzform erklären?
>
> Mittlerweile ist das Antik.

Gut zu wissen ...

> Insgesammt gab es drei - Namen sind eher variabel...
> Einmal eine, die aus der alten Erbmasse stammt und reines Userland
> Threading macht - die nutzt maximal eine CPU und bei einigen Syscalls
> blockiert die andere Threads - im Regelfal bekannt als libc_r.
> Die scheint noch irgendwie geflegt zu werden, aber ich finde auf einem
> installierten System nur noch alte.
> Dann eine, die Mischung aus Kernel und Userland, was eine experimentelle
> und gut klingende Idee war, aber wohl aufgegeben wurde - nannte sich
> im Regelfall libkse und IIRC später libpthread.
> Und später kam eine hinzu, die rein im Kernel arbeitet und inzwischen
> als default gilt - dürfte inzwischen libthr sein.
> Bezüglich der Namen will ich mich echt nicht festlegen, dass die
> alle richtig sind.

Bei libpthread und libthr liegst Du offenbar richtig, und mit letzterer
funktioniert alles wie es soll.

Sogar den kurzen Schrecken, als "alles andere" nicht mehr starten wollte
konnt ich dank der wunderbar gepflegten manpages von FreeBSD lösen ohne
komplette Neuübersetzng der Ports. Man kann ja das "mappin" auf ein
Programm oder einen Pfad beschränken. :)

> > > Mein Problem ist jetzt ein Programm, das bisher ohne Probleme lief, in
> > > neuer Version aber beim Startversuch folgenden Fehler meldet:
> > >
> > > $ lazarus
> > > Fatal error 'Spinlock called when not threaded.' at line 78 in
> > > file /usr/src7/src/lib/libthr/thread/thr_spinlock.c (errno = 2)
> > > Abbruch(core dumped)
> >
> > Mittlerweile habe ich gelernt, daß dieser Fehler auftritt, wenn ein
> > Programm gegen verschiedene Threading Libraries gelinkt wird. Und ich
>
> Nromalerweise sollte kein Programm/Lib gegen eine bestimte gelinkt sein.
>
> > weiß, daß dieses Problem mittels Umlenken aller Bibliotheksnamen auf
> > eine einzige in /etc/libmap.conf behoben werden kann.
> >
> > Nur welche soll ich wählen? Ist es egal?
>
> Du wirst verutlich libthr verwenden wollen.

Genau.

> Schau einfach mal an was dein Programm läd.
> Wenn es keine Libs zur Laufzeit nachläd ist ldd aussagekräftig.

Ich war schon mit truss un ktrace unterwegs, aber diesmal hatte ich
Glück und der zweite Versuch einer angepaßten libmap.conf tut.

Danke!

-- 
Marc Santhoff <M.Santhoff(at)web.de>
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 26 May 2010 - 23:23:16 CEST

search this site