[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: KPluginLoader ==> cannot load any more object with static TLS
From:       Stephane MANKOWSKI <stephane () mankowski ! fr>
Date:       2012-11-03 19:06:49
Message-ID: 50956B49.2030404 () mankowski ! fr
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi All,

I am progressing.
If I call a plasma _static_ method (as const KPluginInfo::List skglist = 
Plasma::Applet::listAppletInfo("", "skrooge");) in my plugin, the I have 
the error "*dlopen: cannot load any more object with static TLS*".
If I comment this line, then the plugin is loaded without error.

Of course, I need to call this static method, so what should I do?
Should I move this call in an other library which is not a plugin?

Regards,
Stephane

Le 01/11/2012 21:12, Stephane MANKOWSKI a écrit :
> Hi,
> 
> I don't know if this is a coincidence or not but Skrooge is not able 
> to load /*_only the plugins using "Plasma" APIs_*/ any more
> (The same code works on kubuntu 12.04 but not on 12.10).
> 
> Do you think I am on the right track?
> Do you have some advice to find the correction?
> 
> Thank you.
> 
> Le 31/10/2012 19:09, Stephane MANKOWSKI a écrit :
> > Hi,
> > 
> > Thank you for your answer.
> > Now, I know the reason of the error (not due to KDE or Skrooge, due 
> > to libc) ...
> > ... do you know how to repair it?
> > 
> > Do I have to put special linking "tags" in the CMakeLists.txt of my 
> > plugins?
> > Do I have to open a bug on KPluginLoader?
> > 
> > Is somebody else has the same kind of issue with plugins?
> > 
> > Thank you.
> > 
> > Le 31/10/2012 15:30, Sune Vuorela a écrit :
> > > On 2012-10-30, Stephane MANKOWSKI <stephane@mankowski.fr> wrote:
> > > > On kubuntu 12.04 (with KDE 4.9.1), all plugins were successfully 
> > > > loaded.
> > > > On kubuntu 12.10 (with KDE 4.9.2), some plugins are not loaded due 
> > > > to a=20
> > > > NULL pointer returned by /*loader.factory()*/
> > > > I didn't change the code of Skrooge in between.
> > > > 
> > > > If I print the error message returned by /*loader.errorString()*/, 
> > > > I get=20
> > > > this:
> > > > /*dlopen: cannot load any more object with static TLS*/
> > > > 
> > > > I don't understand this error.
> > > > What does it mean?
> > > > What should I do to be able to load all plugins like on previous 
> > > > version?
> > > the error is coming from libdl (the thing that is a few layers
> > > underneath kpluginloader). And it is apparantly because there isn't 
> > > room
> > > in the DTV to initalize the static TLS.
> > > TLS is short for Threaded Local Storage (not related to ssl-TLS)
> > > 
> > > the code is in
> > > http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/dl-open.c;h=9c39a34a4b0baafd93f37b1364c10724b0fa6d9b;hb=HEAD \
> > >  
> > > line 546
> > > 
> > > /Sune
> > > - who don't fully understand the email he is writing
> > > 
> > > 
> > > > > Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to 
> > > > > unsubscribe <<
> > 
> > 
> > > > Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to 
> > > > unsubscribe <<
> 
> 
> 
> > > Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[Attachment #5 (text/html)]

<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi All,<br>
    <br>
    I am progressing.<br>
    If I call a plasma <u>static</u> method (as const KPluginInfo::List
    skglist = Plasma::Applet::listAppletInfo("", "skrooge");) in my
    plugin, the I have the error "<b>dlopen: cannot load any more object
      with static TLS</b>".<br>
    If I comment this line, then the plugin is loaded without error.<br>
    <br>
    Of course, I need to call this static method, so what should I do?<br>
    Should I move this call in an other library which is not a plugin?<br>
    <br>
    Regards,<br>
    Stephane<br>
    <br>
    <div class="moz-cite-prefix">Le 01/11/2012 21:12, Stephane MANKOWSKI
      a &eacute;crit&nbsp;:<br>
    </div>
    <blockquote cite="mid:5092D7A2.8040203@mankowski.fr" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      Hi,<br>
      <br>
      I don't know if this is a coincidence or not but Skrooge is not
      able to load <i><b><u>only the plugins using "Plasma" APIs</u></b></i>
      any more <br>
      (The same code works on kubuntu 12.04 but not on 12.10).<br>
      <br>
      Do you think I am on the right track?<br>
      Do you have some advice to find the correction?<br>
      <br>
      Thank you.<br>
      <br>
      <div class="moz-cite-prefix">Le 31/10/2012 19:09, Stephane
        MANKOWSKI a &eacute;crit&nbsp;:<br>
      </div>
      <blockquote cite="mid:5091694B.50105@mankowski.fr" type="cite">Hi,
        <br>
        <br>
        Thank you for your answer. <br>
        Now, I know the reason of the error (not due to KDE or Skrooge,
        due to libc) ... <br>
        ... do you know how to repair it? <br>
        <br>
        Do I have to put special linking "tags" in the CMakeLists.txt of
        my plugins? <br>
        Do I have to open a bug on KPluginLoader? <br>
        <br>
        Is somebody else has the same kind of issue with plugins? <br>
        <br>
        Thank you. <br>
        <br>
        Le 31/10/2012 15:30, Sune Vuorela a &eacute;crit : <br>
        <blockquote type="cite">On 2012-10-30, Stephane MANKOWSKI <a
            moz-do-not-send="true" class="moz-txt-link-rfc2396E"
            href="mailto:stephane@mankowski.fr">&lt;stephane@mankowski.fr&gt;</a>
          wrote: <br>
          <blockquote type="cite">On kubuntu 12.04 (with KDE 4.9.1), all
            plugins were successfully loaded. <br>
            On kubuntu 12.10 (with KDE 4.9.2), some plugins are not
            loaded due to a  <br>
            NULL pointer returned by /*loader.factory()*/ <br>
            I didn't change the code of Skrooge in between. <br>
            <br>
            If I print the error message returned by
            /*loader.errorString()*/, I get  <br>
            this: <br>
            /*dlopen: cannot load any more object with static TLS*/ <br>
            <br>
            I don't understand this error. <br>
            What does it mean? <br>
            What should I do to be able to load all plugins like on
            previous version? <br>
          </blockquote>
          the error is coming from libdl (the thing that is a few layers
          <br>
          underneath kpluginloader). And it is apparantly because there
          isn't room <br>
          in the DTV to initalize the static TLS. <br>
          TLS is short for Threaded Local Storage (not related to
          ssl-TLS) <br>
          <br>
          the code is in <br>
          <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/dl-open.c;hœ39a34a4b0baafd93 \
f37b1364c10724b0fa6d9b;hb=HEAD">http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/dl-open.c;hœ39a34a4b0baafd93f37b1364c10724b0fa6d9b;hb=HEAD</a>
  <br>
          line 546 <br>
          <br>
          /Sune <br>
          &nbsp; - who don't fully understand the email he is writing <br>
          <br>
          <br>
          <blockquote type="cite">
            <blockquote type="cite">Visit <a moz-do-not-send="true"
                class="moz-txt-link-freetext"
                href="http://mail.kde.org/mailman/listinfo/kde-devel#unsub">http://mail.kde.org/mailman/listinfo/kde-devel#unsub</a>
  to unsubscribe &lt;&lt; <br>
            </blockquote>
          </blockquote>
        </blockquote>
        <br>
        <br>
        <blockquote type="cite">
          <blockquote type="cite">Visit <a moz-do-not-send="true"
              class="moz-txt-link-freetext"
              href="http://mail.kde.org/mailman/listinfo/kde-devel#unsub">http://mail.kde.org/mailman/listinfo/kde-devel#unsub</a>
  to unsubscribe &lt;&lt; <br>
          </blockquote>
        </blockquote>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">
</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="">Visit <a class="moz-txt-link-freetext" \
href="http://mail.kde.org/mailman/listinfo/kde-devel#unsub">http://mail.kde.org/mailman/listinfo/kde-devel#unsub</a> \
to unsubscribe &lt;&lt; </pre>
        </blockquote>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>



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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic