Hi Rainer,

I talked to my manager. we are OK to contribute the output plugin to the
rsyslog src tree. The code needs some clean-up before I can do that though.

Thanks,

Liwei

On Thu, Oct 9, 2014 at 10:59 AM, Liwei Peng <[email protected]> wrote:

> Hi Rainer, I got a stripped down version of my output plugin, removed most
> of the code except creating a new thread in BEGINcreateInstance(). See
> attached file.
>
> On Wed, Oct 8, 2014 at 4:07 PM, Liwei Peng <[email protected]> wrote:
>
>> Thanks Rainer.  I'll see whether I can strip down the code to have a
>> repro.  For the plugin to be open source, we didn't make a decision yet. I
>> need to get permission from my manager.
>>
>> On Wed, Oct 8, 2014 at 12:25 AM, Rainer Gerhards <
>> [email protected]> wrote:
>>
>>> 2014-10-08 2:33 GMT+02:00 Liwei Peng <[email protected]>:
>>>
>>> > I did more debugging, not root cause yet. but it could be related to
>>> the
>>> > fact that my new thread  is created in the BEGINcreateInstance.
>>> >
>>> >
>>> I don't think so.
>>>
>>>
>>> > Is this the right place to create a helper thread? If not, what other
>>> place
>>> > is best?
>>> >
>>> > I only need to create one helper thread. it will run forever.
>>> >
>>> >
>>> Here is one place which is used by omfile when additional threads are
>>> created:
>>>
>>> https://github.com/rsyslog/rsyslog/blob/master/runtime/stream.c#L874
>>>
>>> maybe this is useful to look at.
>>>
>>> Would it be possible that you strip down your plugin so that it only does
>>> dbgprintf's and nothing else. And add the autotools plumbing so that I
>>> can
>>> build it together with rsyslog. If so, I'd build it and see what happens
>>> on
>>> my machine.
>>>
>>> As a related note, would you be willing to contribute the plugin to the
>>> rsyslog community? If so, I could integrate it into the source tree (with
>>> full credits, of course).
>>>
>>> Rainer
>>>
>>>
>>> > On Tue, Oct 7, 2014 at 1:00 PM, David Lang <[email protected]> wrote:
>>> >
>>> > > On Tue, 7 Oct 2014, Liwei Peng wrote:
>>> > >
>>> > >  Once I ran rsyslog with "-dn" mode, everything works as expected.
>>> > >>
>>> > >
>>> > > ouch, that makes things hard :-(
>>> > >
>>> > > just to be sure we're on the same page, you were running it with -dn
>>> as a
>>> > > service, right?
>>> > >
>>> > >  the new
>>> > >> thread is created and running properly.  With only "-d", the thread
>>> will
>>> > >> exit within 2 seconds, just like in service mode.  in the '-dn'
>>> mode,
>>> > the
>>> > >> rsyslog is running as the proper user (syslog/syslog), so that
>>> shouldn't
>>> > >> be
>>> > >> the problem.
>>> > >>
>>> > >> I also made my new thread very simple by making it a do a dummy()
>>> > while(1)
>>> > >> loop. In the loop, just print out some msg, sleep for X seconds.
>>> then do
>>> > >> the doop again.
>>> > >>
>>> > >> What could cause this behaviour difference?
>>> > >>
>>> > >
>>> > > if it works when you run it as root, but not when the system runs it,
>>> > that
>>> > > means that there is something different between the two. On RHEL
>>> systems
>>> > > this is typically SELinux, which is why we looked there first.
>>> > >
>>> > > Please take a very close look at the system startup scripts and
>>> > > parameters, there has got to be something different there compared to
>>> > when
>>> > > you start it manually.
>>> > >
>>> > > -d says to spit out debug output, -n says to not go into the
>>> background
>>> > as
>>> > > a daemon, but also ends up changing timing of some things
>>> > >
>>> > > if -n makes it work, then look for oddities or race conditions
>>> related to
>>> > > your thread.
>>> > >
>>> > > if -d spits out data all the way until it dies, look through that
>>> output
>>> > > to see if it says why it's dieing.
>>> > >
>>> > > David Lang
>>> > >
>>> > >
>>> > >  Thanks,
>>> > >>
>>> > >> Liwei
>>> > >>
>>> > >>
>>> > >> On Tue, Oct 7, 2014 at 10:45 AM, David Lang <[email protected]> wrote:
>>> > >>
>>> > >>  can you configure the startup to start it in debug mode (-dn) and
>>> dump
>>> > >>> the
>>> > >>> output to a file? that could give us a clue about what's failing.
>>> > >>>
>>> > >>> David Lang
>>> > >>>
>>> > >>> On Tue, 7 Oct 2014, Liwei Peng wrote:
>>> > >>>
>>> > >>>  Date: Tue, 7 Oct 2014 10:42:55 -0700
>>> > >>>
>>> > >>>> From: Liwei Peng <[email protected]>
>>> > >>>> Reply-To: rsyslog-users <[email protected]>
>>> > >>>> To: rsyslog-users <[email protected]>
>>> > >>>> Subject: Re: [rsyslog] output plugin: new thread is not running
>>> > properly
>>> > >>>> in
>>> > >>>>     service mode
>>> > >>>>
>>> > >>>>
>>> > >>>> Thanks David.
>>> > >>>>
>>> > >>>> I found that rsyslogd is in the disabled profile directory. Also,
>>> even
>>> > >>>> after I totally stop and teardown the apparmor service, my new
>>> thread
>>> > >>>> still
>>> > >>>> has trouble to start up.
>>> > >>>>
>>> > >>>> /etc/apparmor.d/disable$ ls
>>> > >>>> usr.bin.firefox  usr.sbin.rsyslogd
>>> > >>>>
>>> > >>>>
>>> > >>>> On Tue, Oct 7, 2014 at 8:43 AM, David Lang <[email protected]> wrote:
>>> > >>>>
>>> > >>>>  Ubuntu uses AppArmor instead of SELinux
>>> > >>>>
>>> > >>>>>
>>> > >>>>> /etc/apparmor.d/usr.sbin.rsyslogd controls the AA config for
>>> rsyslog.
>>> > >>>>>
>>> > >>>>> I don't know exactly what your additional thread is trying to
>>> access,
>>> > >>>>> but
>>> > >>>>> you probably just need to add the permissions here to grant it
>>> the
>>> > >>>>> access.
>>> > >>>>>
>>> > >>>>> David Lang
>>> > >>>>>
>>> > >>>>>
>>> > >>>>> On Tue, 7 Oct 2014, Liwei Peng wrote:
>>> > >>>>>
>>> > >>>>>  Thanks David and Rainer.
>>> > >>>>>
>>> > >>>>>
>>> > >>>>>> I am using Ubuntu 14.04 LTS 64-bit. However, when I ran
>>> 'getenforce'
>>> > >>>>>> on
>>> > >>>>>> my
>>> > >>>>>> computer, it showed "Disabled". SeLinux package was not
>>> installed on
>>> > >>>>>> my
>>> > >>>>>> computer either.
>>> > >>>>>>
>>> > >>>>>>
>>> > >>>>>> On Tue, Oct 7, 2014 at 12:31 AM, Rainer Gerhards <
>>> > >>>>>> [email protected]>
>>> > >>>>>> wrote:
>>> > >>>>>>
>>> > >>>>>>  2014-10-07 5:04 GMT+02:00 David Lang <[email protected]>:
>>> > >>>>>>
>>> > >>>>>>
>>> > >>>>>>>  Are you using a system that has SELinux installed? on such
>>> systems
>>> > >>>>>>> the
>>> > >>>>>>>
>>> > >>>>>>>  permissions that rsyslog has when started as a service are
>>> > different
>>> > >>>>>>>> than
>>> > >>>>>>>> when you run it manually as root.
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>  Yeah, as David says, it's most probably SELinux or something
>>> > along
>>> > >>>>>>>>
>>> > >>>>>>>>  these
>>> > >>>>>>> lines. Rsyslog does not impose any limits on additional
>>> threads a
>>> > >>>>>>> plugin
>>> > >>>>>>> uses internally. For example, omfile uses multiple helper
>>> threads
>>> > >>>>>>> when
>>> > >>>>>>> async writes are configured. Also, there is no real difference
>>> from
>>> > >>>>>>> rsyslog's PoV between running in a console session vs. as
>>> > background
>>> > >>>>>>> service. With systemd, the code path is actually the same, as
>>> > systemd
>>> > >>>>>>> uses
>>> > >>>>>>> -n itself. So if it runs in a console session but not as
>>> service,
>>> > the
>>> > >>>>>>> reason most probably is somewhere in the system config.
>>> > >>>>>>>
>>> > >>>>>>> HTH
>>> > >>>>>>> Rainer
>>> > >>>>>>>
>>> > >>>>>>>
>>> > >>>>>>>  David Lang
>>> > >>>>>>>
>>> > >>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>  On Mon, 6 Oct 2014, Liwei Peng wrote:
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>  In my output plugin (see attached code), because I need to
>>> > process
>>> > >>>>>>>> and
>>> > >>>>>>>>
>>> > >>>>>>>>  send
>>> > >>>>>>>>> the messages to some other daemon, I created a new pthread to
>>> > >>>>>>>>>
>>> > >>>>>>>>>  listen/read
>>> > >>>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>  response from that daemon.  All the code works well when I
>>> ran by
>>> > >>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>>  starting
>>> > >>>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>  rsyslog in manual  mode.
>>> > >>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>
>>> > >>>>>>>>> /usr/sbin/rsyslogd -f/etc/rsyslog.conf -u2 -n -irsyslog.pid
>>> > >>>>>>>>> -M/usr/lib/rsyslog
>>> > >>>>>>>>>
>>> > >>>>>>>>> However, when I ran my plugin with rsyslogd as service, it
>>> seems
>>> > >>>>>>>>> that
>>> > >>>>>>>>> my
>>> > >>>>>>>>> new thread is started but it is not running properly. I saw
>>> the
>>> > >>>>>>>>> thread
>>> > >>>>>>>>> print out a startup msg but it didn't continue printing new
>>> msg
>>> > as
>>> > >>>>>>>>> expected.
>>> > >>>>>>>>>
>>> > >>>>>>>>> What's wrong with my code? is there limitation on using new
>>> > >>>>>>>>> pthread?
>>> > >>>>>>>>>
>>> > >>>>>>>>> Liwei
>>> > >>>>>>>>>
>>> > >>>>>>>>>  _______________________________________________
>>> > >>>>>>>>>
>>> > >>>>>>>>>  rsyslog mailing list
>>> > >>>>>>>>>
>>> > >>>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>>>>>>> http://www.rsyslog.com/professional-services/
>>> > >>>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED
>>> by a
>>> > >>>>>>>> myriad
>>> > >>>>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT
>>> POST if
>>> > >>>>>>>> you
>>> > >>>>>>>> DON'T LIKE THAT.
>>> > >>>>>>>>
>>> > >>>>>>>>  _______________________________________________
>>> > >>>>>>>>
>>> > >>>>>>>>  rsyslog mailing list
>>> > >>>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>>>>>> http://www.rsyslog.com/professional-services/
>>> > >>>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED
>>> by a
>>> > >>>>>>> myriad
>>> > >>>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT
>>> POST if
>>> > >>>>>>> you
>>> > >>>>>>> DON'T LIKE THAT.
>>> > >>>>>>>
>>> > >>>>>>>  _______________________________________________
>>> > >>>>>>>
>>> > >>>>>>>  rsyslog mailing list
>>> > >>>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>>>>> http://www.rsyslog.com/professional-services/
>>> > >>>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by
>>> a
>>> > >>>>>> myriad
>>> > >>>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST
>>> if
>>> > you
>>> > >>>>>> DON'T LIKE THAT.
>>> > >>>>>>
>>> > >>>>>>  _______________________________________________
>>> > >>>>>>
>>> > >>>>>>  rsyslog mailing list
>>> > >>>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>>>> http://www.rsyslog.com/professional-services/
>>> > >>>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> > >>>>> myriad
>>> > >>>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST
>>> if
>>> > you
>>> > >>>>> DON'T LIKE THAT.
>>> > >>>>>
>>> > >>>>>  _______________________________________________
>>> > >>>>>
>>> > >>>> rsyslog mailing list
>>> > >>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>>> http://www.rsyslog.com/professional-services/
>>> > >>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> > myriad
>>> > >>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST
>>> if you
>>> > >>>> DON'T LIKE THAT.
>>> > >>>>
>>> > >>>>  _______________________________________________
>>> > >>>>
>>> > >>> rsyslog mailing list
>>> > >>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >>> http://www.rsyslog.com/professional-services/
>>> > >>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> > myriad
>>> > >>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>>> you
>>> > >>> DON'T LIKE THAT.
>>> > >>>
>>> > >>>  _______________________________________________
>>> > >> rsyslog mailing list
>>> > >> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > >> http://www.rsyslog.com/professional-services/
>>> > >> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > >> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> myriad
>>> > >> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>>> you
>>> > >> DON'T LIKE THAT.
>>> > >>
>>> > >>  _______________________________________________
>>> > > rsyslog mailing list
>>> > > http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > > http://www.rsyslog.com/professional-services/
>>> > > What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> myriad
>>> > > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if
>>> you
>>> > > DON'T LIKE THAT.
>>> > >
>>> > _______________________________________________
>>> > rsyslog mailing list
>>> > http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> > http://www.rsyslog.com/professional-services/
>>> > What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a
>>> myriad
>>> > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>> > DON'T LIKE THAT.
>>> >
>>> _______________________________________________
>>> rsyslog mailing list
>>> http://lists.adiscon.net/mailman/listinfo/rsyslog
>>> http://www.rsyslog.com/professional-services/
>>> What's up with rsyslog? Follow https://twitter.com/rgerhards
>>> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
>>> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
>>> DON'T LIKE THAT.
>>>
>>
>>
>
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to