ZNC Using 100% CPU when using bouncedcc #469

Open
opened 2026-10-05 04:23:18 +02:00 by adam · 14 comments
Owner

After reconnecting to ZNC it will hang sometimes and not complete connection (from either client or server). Connecting to the process via strace reveals:

gettimeofday({1423068229, 539234}, NULL) = 0
gettimeofday({1423068229, 539278}, NULL) = 0
poll([{fd=3, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN|POLLOUT}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=25, events=POLLIN}, {fd=26, events=POLLIN}, {fd=27, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}], 24, 100) = 1 ([{fd=15, revents=POLLOUT}])
write(15, 0x217a, 118958)               = -1 EFAULT (Bad address)
read(15, 0x4cadfb3, 5)                  = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({1423068229, 539578}, NULL) = 0
gettimeofday({1423068229, 539622}, NULL) = 0
gettimeofday({1423068229, 539668}, NULL) = 0

so bit more info:

write(12, "_\345\214\272cV\334\222\261\366\350L\321\355\366\315:\367\361\\}\2\213\261\370\346\360WX\323g\240"..., 41) = -1 EAGAIN (Resource temporarily unavailable)
it keeps reading buffer, and keeps retrying that write
eventually it succeeds: write(12, "_\345\214\272cV\334\222\261\366\350L\321\355\366\315:\367\361\\}\2\213\261\370\346\360WX\323g\240"..., 41) = 41
tries send the rest
write(12, "\27\3\3>@\31d\354\231t\t}\371M\333\227\362\275(\374\342\357\321 B\226\213\36\371L\375\""..., 63764) = 7903
then tries whats left
write(12, "\221\245\276\356\356\347;\26`\205\237^\304|\205k\226\216@-\03180\317\37\267\353\355m\313$\266"..., 55861) = -1 EAGAIN (Resource temporarily unavailable)
and now everything's scrambled: write(12, 0x1edf, 55861)                = -1 EAGAIN (Resource temporarily unavailable)

(snippet from logs)

This primarily happens when connecting to freenode, other networks are not affected as much.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8286849-znc-using-100-cpu-when-using-bouncedcc?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).
After reconnecting to ZNC it will hang sometimes and not complete connection (from either client or server). Connecting to the process via strace reveals: ``` gettimeofday({1423068229, 539234}, NULL) = 0 gettimeofday({1423068229, 539278}, NULL) = 0 poll([{fd=3, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=15, events=POLLIN|POLLOUT}, {fd=16, events=POLLIN}, {fd=17, events=POLLIN}, {fd=18, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=25, events=POLLIN}, {fd=26, events=POLLIN}, {fd=27, events=POLLIN}, {fd=28, events=POLLIN}, {fd=29, events=POLLIN}], 24, 100) = 1 ([{fd=15, revents=POLLOUT}]) write(15, 0x217a, 118958) = -1 EFAULT (Bad address) read(15, 0x4cadfb3, 5) = -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1423068229, 539578}, NULL) = 0 gettimeofday({1423068229, 539622}, NULL) = 0 gettimeofday({1423068229, 539668}, NULL) = 0 ``` so bit more info: ``` write(12, "_\345\214\272cV\334\222\261\366\350L\321\355\366\315:\367\361\\}\2\213\261\370\346\360WX\323g\240"..., 41) = -1 EAGAIN (Resource temporarily unavailable) it keeps reading buffer, and keeps retrying that write eventually it succeeds: write(12, "_\345\214\272cV\334\222\261\366\350L\321\355\366\315:\367\361\\}\2\213\261\370\346\360WX\323g\240"..., 41) = 41 tries send the rest write(12, "\27\3\3>@\31d\354\231t\t}\371M\333\227\362\275(\374\342\357\321 B\226\213\36\371L\375\""..., 63764) = 7903 then tries whats left write(12, "\221\245\276\356\356\347;\26`\205\237^\304|\205k\226\216@-\03180\317\37\267\353\355m\313$\266"..., 55861) = -1 EAGAIN (Resource temporarily unavailable) and now everything's scrambled: write(12, 0x1edf, 55861) = -1 EAGAIN (Resource temporarily unavailable) ``` (snippet from logs) This primarily happens when connecting to freenode, other networks are not affected as much. ## <bountysource-plugin> --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8286849-znc-using-100-cpu-when-using-bouncedcc?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github). </bountysource-plugin> <!-- github-sync-id:56555223 -->
Author
Owner

ZNC version and OS?

ZNC version and OS? <!-- github-comment-id:72893414 -->
Author
Owner

Ah right, sorry about that.
ZNC 1.4 - IPv6: yes, SSL: yes, DNS: threads
Running on a ArchLinux box.

Ah right, sorry about that. ZNC 1.4 - IPv6: yes, SSL: yes, DNS: threads Running on a ArchLinux box. <!-- github-comment-id:72893604 -->
Author
Owner

Additional notes from the log @Ttech just added:

funny, 0x1edf is 7903
which is the return value of write from the success of the first queued attempt

Either something in ZNC is not handling return values correctly, or something in OpenSSL isn't. I'm not quite sure where to look, though, and I'm not very familiar with C++ to make it through all the layers of indirection.

Additional notes from the log @Ttech just added: ``` funny, 0x1edf is 7903 which is the return value of write from the success of the first queued attempt ``` Either something in ZNC is not handling return values correctly, or something in OpenSSL isn't. I'm not quite sure where to look, though, and I'm not very familiar with C++ to make it through all the layers of indirection. <!-- github-comment-id:72959305 -->
Author
Owner

Same problem here, for freenode too
ZNC 1.4-2, Debian testing, IPv6: yes, SSL: yes, DNS: threads

strace on the ZNC process leads to huuuuuuuuuuge spam like this and nothing else

[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
[pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
Same problem here, for freenode too ZNC 1.4-2, Debian testing, IPv6: yes, SSL: yes, DNS: threads strace on the ZNC process leads to huuuuuuuuuuge spam like this and nothing else ``` [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) [pid 31295] recvfrom(15, 0x7fffe5a7a2c0, 10, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable) ``` <!-- github-comment-id:73433301 -->
Author
Owner

@aeris what irc client do you use? is it on os x?

Seems to primarily happen only when connect via SSL.

@aeris what irc client do you use? is it on os x? Seems to primarily happen only when connect via SSL. <!-- github-comment-id:73905301 -->
Author
Owner

I use konversation, on a Debian testing.
Seems happen when connection hang (real) server side.
In my case when Freenode close one of it node, leading the socket to timeout when connecting.

I use konversation, on a Debian testing. Seems happen when connection hang (real) server side. In my case when Freenode close one of it node, leading the socket to timeout when connecting. <!-- github-comment-id:74379449 -->
Author
Owner

Can confirm this is still happening on ArchLinux -
OpenSSL 1.0.2 22 Jan 2015
ZNC - 1.6.0 - http://znc.in

Can confirm this is still happening on ArchLinux - OpenSSL 1.0.2 22 Jan 2015 ZNC - 1.6.0 - http://znc.in <!-- github-comment-id:75301950 -->
Author
Owner

As this issue isn't happening to everyone, could you paste list of your loaded modules /msg *status listmods? (See https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks for making the output easier to read on this issue tracker).

Also do you have zncstrap (which breaks at least network adding in 1.6.0) or any other custom patches?


I am not developer and I have no idea if this even goes anywhere, but I think list of modules might be a good idea in case there is something that people who are experiencing this have in common.

As this issue isn't happening to everyone, could you paste list of your loaded modules `/msg *status listmods`? (See https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks for making the output easier to read on this issue tracker). Also do you have zncstrap (which breaks at least network adding in 1.6.0) or any other custom patches? --- _I am not developer and I have no idea if this even goes anywhere, but I think list of modules might be a good idea in case there is something that people who are experiencing this have in common._ <!-- github-comment-id:75393764 -->
Author
Owner

Here's the list of mods

View is Loading…
    Global modules:
    +===========+===========+
    | Name      | Arguments |
    +===========+===========+
    | lastseen  |           |
    +-----------+-----------+
    | partyline |           |
    +-----------+-----------+
    | webadmin  |           |
    +-----------+-----------+
    | modpython |           |
    +-----------+-----------+
    | identfile |           |
    +-----------+-----------+
    | adminlog  |           |
    +===========+===========+
    User modules:
    +==============+===========+
    | Name         | Arguments |
    +==============+===========+
    | bouncedcc    |           |
    +--------------+-----------+
    | perform      |           |
    +--------------+-----------+
    | shell        |           |
    +--------------+-----------+
    | listsockets  |           |
    +--------------+-----------+
    | controlpanel |           |
    +--------------+-----------+
    | send_raw     |           |
    +--------------+-----------+
    | chansaver    |           |
    +--------------+-----------+
    | autoattach   |           |
    +--------------+-----------+
    | cert         |           |
    +--------------+-----------+
    | buffextras   |           |
    +--------------+-----------+
    | log          |           |
    +--------------+-----------+
    | ctcpflood    | 4 2       |
    +==============+===========+
    Network modules:
    +============+===========+
    | Name       | Arguments |
    +============+===========+
    | watch      |           |
    +------------+-----------+
    | awaystore   |           |
    +------------+-----------+
    | sasl       |           |
    +------------+-----------+
    | stickychan |           |
    +============+===========+
Here's the list of mods ``` View is Loading… Global modules: +===========+===========+ | Name | Arguments | +===========+===========+ | lastseen | | +-----------+-----------+ | partyline | | +-----------+-----------+ | webadmin | | +-----------+-----------+ | modpython | | +-----------+-----------+ | identfile | | +-----------+-----------+ | adminlog | | +===========+===========+ User modules: +==============+===========+ | Name | Arguments | +==============+===========+ | bouncedcc | | +--------------+-----------+ | perform | | +--------------+-----------+ | shell | | +--------------+-----------+ | listsockets | | +--------------+-----------+ | controlpanel | | +--------------+-----------+ | send_raw | | +--------------+-----------+ | chansaver | | +--------------+-----------+ | autoattach | | +--------------+-----------+ | cert | | +--------------+-----------+ | buffextras | | +--------------+-----------+ | log | | +--------------+-----------+ | ctcpflood | 4 2 | +==============+===========+ Network modules: +============+===========+ | Name | Arguments | +============+===========+ | watch | | +------------+-----------+ | awaystore | | +------------+-----------+ | sasl | | +------------+-----------+ | stickychan | | +============+===========+ ``` <!-- github-comment-id:75408239 -->
Author
Owner

I don't have this issue, but I could probably still paste my modules for comparsion. With quick glance you seem to have awaystore and bouncedcc that I don't have.

2015-02-22 10:13:42+0200 < *status> Global modules:
2015-02-22 10:13:42+0200 < *status> +============+===============================================+
2015-02-22 10:13:42+0200 < *status> | Name       | Arguments                                     |
2015-02-22 10:13:42+0200 < *status> +============+===============================================+
2015-02-22 10:13:42+0200 < *status> | webadmin   |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | adminlog   |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | lastseen   |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | chansaver  |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | certauth   |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | privmsg    |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | fail2ban   |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | log        | -sanitize $USER/$NETWORK/$WINDOW/%Y-%m-%d.log |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | block_motd |                                               |
2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+
2015-02-22 10:13:42+0200 < *status> | playback   |                                               |
2015-02-22 10:13:42+0200 < *status> +============+===============================================+
2015-02-22 10:13:42+0200 < *status> User modules:
2015-02-22 10:13:42+0200 < *status> +==================+===========+
2015-02-22 10:13:42+0200 < *status> | Name             | Arguments |
2015-02-22 10:13:42+0200 < *status> +==================+===========+
2015-02-22 10:13:42+0200 < *status> | controlpanel     |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | autoreply        |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | cert             |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | send_raw         |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | shell            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | ctcpflood        | 4 2       |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | disconkick       |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | bouncedcc        |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | alias            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | kvirc            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | autoreply        |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | cert             |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | send_raw         |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | shell            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | ctcpflood        | 4 2       |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | disconkick       |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | bouncedcc        |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | alias            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | kvirc            |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | listsockets      |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | perform          |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | ctcp_notifier    |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | autoattach       |           |
2015-02-22 10:13:42+0200 < *status> +------------------+-----------+
2015-02-22 10:13:42+0200 < *status> | clearbufferonmsg |           |
2015-02-22 10:13:42+0200 < *status> +==================+===========+
2015-02-22 10:13:42+0200 < *status> Network modules:
2015-02-22 10:13:42+0200 < *status> +================+===========+
2015-02-22 10:13:42+0200 < *status> | Name           | Arguments |
2015-02-22 10:13:42+0200 < *status> +================+===========+
2015-02-22 10:13:42+0200 < *status> | keepnick       |           |
2015-02-22 10:13:42+0200 < *status> +----------------+-----------+
2015-02-22 10:13:42+0200 < *status> | kickrejoin     |           |
2015-02-22 10:13:42+0200 < *status> +----------------+-----------+
2015-02-22 10:13:42+0200 < *status> | simple_away    |           |
2015-02-22 10:13:42+0200 < *status> +----------------+-----------+
2015-02-22 10:13:42+0200 < *status> | autocycle      |           |
2015-02-22 10:13:42+0200 < *status> +----------------+-----------+
2015-02-22 10:13:42+0200 < *status> | modules_online |           |
2015-02-22 10:13:42+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | route_replies  |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | sasl           |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | savebuff       |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | freenodeinfo   |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | watch          |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | chanfilter     |           |
2015-02-22 10:13:43+0200 < *status> +----------------+-----------+
2015-02-22 10:13:43+0200 < *status> | stickychan     |           |
2015-02-22 10:13:43+0200 < *status> +================+===========+
I don't have this issue, but I could probably still paste my modules for comparsion. With quick glance you seem to have awaystore and bouncedcc that I don't have. ``` 2015-02-22 10:13:42+0200 < *status> Global modules: 2015-02-22 10:13:42+0200 < *status> +============+===============================================+ 2015-02-22 10:13:42+0200 < *status> | Name | Arguments | 2015-02-22 10:13:42+0200 < *status> +============+===============================================+ 2015-02-22 10:13:42+0200 < *status> | webadmin | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | adminlog | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | lastseen | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | chansaver | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | certauth | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | privmsg | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | fail2ban | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | log | -sanitize $USER/$NETWORK/$WINDOW/%Y-%m-%d.log | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | block_motd | | 2015-02-22 10:13:42+0200 < *status> +------------+-----------------------------------------------+ 2015-02-22 10:13:42+0200 < *status> | playback | | 2015-02-22 10:13:42+0200 < *status> +============+===============================================+ 2015-02-22 10:13:42+0200 < *status> User modules: 2015-02-22 10:13:42+0200 < *status> +==================+===========+ 2015-02-22 10:13:42+0200 < *status> | Name | Arguments | 2015-02-22 10:13:42+0200 < *status> +==================+===========+ 2015-02-22 10:13:42+0200 < *status> | controlpanel | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | autoreply | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | cert | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | send_raw | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | shell | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | ctcpflood | 4 2 | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | disconkick | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | bouncedcc | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | alias | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | kvirc | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | autoreply | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | cert | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | send_raw | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | shell | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | ctcpflood | 4 2 | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | disconkick | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | bouncedcc | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | alias | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | kvirc | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | listsockets | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | perform | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | ctcp_notifier | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | autoattach | | 2015-02-22 10:13:42+0200 < *status> +------------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | clearbufferonmsg | | 2015-02-22 10:13:42+0200 < *status> +==================+===========+ 2015-02-22 10:13:42+0200 < *status> Network modules: 2015-02-22 10:13:42+0200 < *status> +================+===========+ 2015-02-22 10:13:42+0200 < *status> | Name | Arguments | 2015-02-22 10:13:42+0200 < *status> +================+===========+ 2015-02-22 10:13:42+0200 < *status> | keepnick | | 2015-02-22 10:13:42+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | kickrejoin | | 2015-02-22 10:13:42+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | simple_away | | 2015-02-22 10:13:42+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | autocycle | | 2015-02-22 10:13:42+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:42+0200 < *status> | modules_online | | 2015-02-22 10:13:42+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | route_replies | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | sasl | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | savebuff | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | freenodeinfo | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | watch | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | chanfilter | | 2015-02-22 10:13:43+0200 < *status> +----------------+-----------+ 2015-02-22 10:13:43+0200 < *status> | stickychan | | 2015-02-22 10:13:43+0200 < *status> +================+===========+ ``` <!-- github-comment-id:75425112 -->
Author
Owner

Also experiencing this on Arch 1.6.0 - the module responsible is definitely bouncedcc - after disabling it on a user who had it enabled and restarting znc the issue has not come up again.

Also experiencing this on Arch 1.6.0 - the module responsible is definitely bouncedcc - after disabling it on a user who had it enabled and restarting znc the issue has not come up again. <!-- github-comment-id:84333544 -->
Author
Owner

Thanks @alexwh. That fixed it! I forgot to reply and close this issue, but I appreciate you posting the solution you found.

Thanks @alexwh. That fixed it! I forgot to reply and close this issue, but I appreciate you posting the solution you found. <!-- github-comment-id:109339054 -->
Author
Owner

If the issue is bouncedcc, I don't think this issue should be closed until it's fixed as it comes with ZNC.

If the issue is bouncedcc, I don't think this issue should be closed until it's fixed as it comes with ZNC. <!-- github-comment-id:109339571 -->
Author
Owner

Could someone also try gdb instead of strace?

Start gdb, enter attach 1234 (where 1234 is znc's PID), type bt and/or bt full, then detach and quit. For extra "fun", you could also repeat this a couple of times (something like attach, then get a backtrace, then cont to let znc continue, then ctrl+c to interrupt it again and bt to get another backtrace).

Since Csocket normally does not use recvfrom(), I wonder if that might have been a DNS thread? Could someone check if this is really the main thread that causes this? I don't have any good suggestions, but in gdb thread apply all bt gives a backtrace for all threads instead of just the current one.

The only "special" think that bouncedcc does might be throttling: If one ends sends data faster than the other end receives, it pauses reading from that "spammy end". Perhaps this code is involved and causes problems?

Could someone also try gdb instead of strace? Start `gdb`, enter `attach 1234` (where 1234 is znc's PID), type `bt` and/or `bt full`, then `detach` and `quit`. For extra "fun", you could also repeat this a couple of times (something like attach, then get a backtrace, then `cont` to let znc continue, then ctrl+c to interrupt it again and `bt` to get another backtrace). Since Csocket normally does not use `recvfrom()`, I wonder if that might have been a DNS thread? Could someone check if this is really the main thread that causes this? I don't have any good suggestions, but in gdb `thread apply all bt` gives a backtrace for all threads instead of just the current one. The only "special" think that bouncedcc does might be throttling: If one ends sends data faster than the other end receives, it pauses reading from that "spammy end". Perhaps this code is involved and causes problems? <!-- github-comment-id:111557374 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/znc#469