Crash when sending a lot of messages through a unix socket

Panagiotis Sakkos panos.sakkos at cern.ch
Wed May 2 16:51:43 EDT 2012


Hi Pranay,

This code logs the messages without problem if I don't stress it, so I suppose you can.
If you want I will commit tomorrow my changes on github and I will send you the url to have a look.

Cheers,
Panos

On May 2, 2012, at 10:31 PM, Pranay Kumar Srivastava wrote:

> You mentioned your code is atomic. Are you certain that you can do a sock_sendmsg from a non process context? I believe you can't do that from a non process context cuz sock_sendmsg-->udp_sendmsg for DGRAM and i think that assumes you are in process context.
> 
> ________________________________________
> From: kernelnewbies-bounces at kernelnewbies.org [kernelnewbies-bounces at kernelnewbies.org] On Behalf Of kernelnewbies-request at kernelnewbies.org [kernelnewbies-request at kernelnewbies.org]
> Sent: Wednesday, May 02, 2012 9:30 PM
> To: kernelnewbies at kernelnewbies.org
> Subject: Kernelnewbies Digest, Vol 18, Issue 2
> 
> Send Kernelnewbies mailing list submissions to
>        kernelnewbies at kernelnewbies.org
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> or, via email, send a message with subject or body 'help' to
>        kernelnewbies-request at kernelnewbies.org
> 
> You can reach the person managing the list at
>        kernelnewbies-owner at kernelnewbies.org
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Kernelnewbies digest..."
> 
> 
> Today's Topics:
> 
>   1. please report distros with CONFIG_DYNAMIC_DEBUG, using
>      ddebug_query=     boot param (Jim Cromie)
>   2. Re: immutable wiki? (michi1 at michaelblizek.twilightparadox.com)
>   3. Re: immutable wiki? (Bill Traynor)
>   4. Crash when sending a lot of messages through a unix socket
>      (Panagiotis Sakkos)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Tue, 1 May 2012 12:36:04 -0600
> From: Jim Cromie <jim.cromie at gmail.com>
> Subject: please report distros with CONFIG_DYNAMIC_DEBUG, using
>        ddebug_query=   boot param
> To: kernelnewbies <kernelnewbies at kernelnewbies.org>
> Message-ID:
>        <CAJfuBxw8aYimAU7kO42vh_e-zZBNSkw9Hd8Dx2tFCOWL4ueVgQ at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
> 
> hi all,
> 
> Ive been asked whether ddebug_query= boot param is used in any distros,
> I think the question seeks to determine a good deprecation schedule for it
> (its been obsoleted by dyndbg= in driver-core-next)
> 
> Would you all be so kind as to check your favorite distros, and report
> the ones that
> have one or both ?
> 
> Ubuntu 12.04 LTS lacks it:
> 
> jimc at chumly:~/projects/lx/linux-2.6$ grep DYNAMIC_DEBUG /boot/config*
> /boot/config-3.0.0-17-generic:# CONFIG_DYNAMIC_DEBUG is not set
> /boot/config-3.2.0-24-generic:# CONFIG_DYNAMIC_DEBUG is not set
> 
> Voyage linux also lacks it, (also debian based)
> 
> 
> Fedora-16 has config option:
> 
> $ uname -a
> Linux groucho.jimc.earth 3.3.2-6.fc16.x86_64 #1 SMP Sat Apr 21
> 12:43:20 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
> $ grep DYNAMIC_DEBUG /boot/config-3.3.*
> /boot/config-3.3.1-5.fc16.x86_64:CONFIG_DYNAMIC_DEBUG=y
> /boot/config-3.3.2-1.fc16.x86_64:CONFIG_DYNAMIC_DEBUG=y
> /boot/config-3.3.2-6.fc16.x86_64:CONFIG_DYNAMIC_DEBUG=y
> 
> but its not used by default. I have modified my grub defaults:
> 
> $ grep ddebug_query /etc/default/grub
> GRUB_CMDLINE_LINUX='quiet rhgb loglevel=8 ddebug_query="module params
> +p" dynamic_debug.verbose=1 nouveau.dyndbg nouveau.force_post=1
> it87.dyndbg=+p nouveau.perflvl_wr=7777'
> 
> FYI, the above usage will eventually be unsupported,
> it can be replaced in driver-core-next by either of:
> 
>  dyndbg="module params +p"
>  params.dyndbg=+p
>  params.dyndbg          # defaults to +p
> 
> the 2nd, 3rd forms also work for loadable modules (though params isnt
> one of them)
> 
> 
> thanks in advance
> Jim
> 
> 
> 
> ------------------------------
> 
> Message: 2
> Date: Wed, 2 May 2012 12:52:38 +0200
> From: michi1 at michaelblizek.twilightparadox.com
> Subject: Re: immutable wiki?
> To: Bill Traynor <wmat at alphatroop.com>
> Cc: kernelnewbies at kernelnewbies.org
> Message-ID: <20120502105237.GA2229 at grml>
> Content-Type: text/plain; charset=us-ascii
> 
> Hi!
> 
> On 09:29 Tue 01 May     , Bill Traynor wrote:
>> I have an Editor account for the kernelnewbies.org wiki, but all pages
>> are currently immutable.  Was the wiki made read-only at some point?
> 
> You must be on http://kernelnewbies.org/EditorsGroup to make changes. This
> was made for spam procection. Everybody who is on the list can add you. What
> is your username in the wiki?
> 
>        -Michi
> --
> programing a layer 3+4 network protocol for mesh networks
> see http://michaelblizek.twilightparadox.com
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Wed, 2 May 2012 08:06:36 -0400
> From: Bill Traynor <wmat at alphatroop.com>
> Subject: Re: immutable wiki?
> To: michi1 at michaelblizek.twilightparadox.com
> Cc: kernelnewbies at kernelnewbies.org
> Message-ID:
>        <CAGfZjq69kO91rbiG8R5jTUmRDq3ZJRjp_oTLqS8wji1M=1NJ-Q at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
> 
> On Wed, May 2, 2012 at 6:52 AM,
> <michi1 at michaelblizek.twilightparadox.com> wrote:
>> Hi!
>> 
>> On 09:29 Tue 01 May ? ? , Bill Traynor wrote:
>>> I have an Editor account for the kernelnewbies.org wiki, but all pages
>>> are currently immutable. ?Was the wiki made read-only at some point?
>> 
>> You must be on http://kernelnewbies.org/EditorsGroup to make changes. This
>> was made for spam procection. Everybody who is on the list can add you. What
>> is your username in the wiki?
> 
> Thanks Michael, Rik already fixed it for me.
> 
>> 
>> ? ? ? ?-Michi
>> --
>> programing a layer 3+4 network protocol for mesh networks
>> see http://michaelblizek.twilightparadox.com
> 
> 
> 
> ------------------------------
> 
> Message: 4
> Date: Wed, 2 May 2012 13:43:41 +0000
> From: Panagiotis Sakkos <panos.sakkos at cern.ch>
> Subject: Crash when sending a lot of messages through a unix socket
> To: "kernelnewbies at kernelnewbies.org"
>        <kernelnewbies at kernelnewbies.org>
> Message-ID:
>        <A1F86B12A2E22C4CB3164ECFFD1C54DB08EC9407 at PLOXCHG03.cern.ch>
> Keywords: CERN SpamKiller Note: -50
> Content-Type: text/plain; charset="iso-8859-1"
> 
> Hi,
> 
> I am trying to log information from within the kernel with the use of a unix socket (/dev/log).
> My code is a kprobe handler, so while executing I am atomic and uninterrupted.
> The crashes begin when I do stress tests against my module, so i.e. more than 50 logs per second.
> The crash messages I get every time are different (from NULL reference, unable to handle page request etc), so I suppose that something is overwritten and this leads to the crash.
> 
> I don't want to post the code here because it ~100 LOC but these are my steps:
> 
> Initialization:
>       call sock_create_kern, with PF_UNIX, SOCK_DGRAM, 0 and the address of my socket,
>       then I memset to 0 my sockaddr_un variable and then I set its sun_family to PF_UNIX and copy the "/dev/log" string to sun_path
> 
> Logging:
>    I have the message that I want to log in variable called buffer and its length in variable called message_length,
>    I set the msg_name of the msghdr to the address of my sockaddr_un variable, than the msn_namelen to sizeof(sockadrr_un), the msg_iov to an iovec variable which contains the buffer and the message_length values, msg_iovlen to 1 and msg_control, msg_controllen to 0.
>    Then I set the fs to KERNEL_DS, call sock_sendmsg with parameters my socket, the address of my msghdr and the message_length and then I restore the fs that there was before setting it to KERNEL_DS.
> 
> Please note that my socket, sockadd_un and my buffer are static variables. Also I always use the socket which is initialized once in the Initialization state (function).
> 
> Do you see any "bad practice" or something that could lead to crashes when stressing with a lot of messages the socket?
> 
> Thank you in advance!
> Panos
> --
> http://www.cern.ch/psakkos
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120502/271a5a4d/attachment-0001.html
> 
> ------------------------------
> 
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
> 
> 
> End of Kernelnewbies Digest, Vol 18, Issue 2
> ********************************************
> 
> 
> 
> ::DISCLAIMER::
> -----------------------------------------------------------------------------------------------------------------------
> 
> The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only.
> E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted,
> lost, destroyed, arrive late or incomplete, or contain viruses.The e mail and its contents (with or without referred
> errors) shall therefore not attach any liability on the originator or HCL or its affiliates. Any views or opinions
> presented in this email are solely those of the author and may not necessarily reflect the opinions of HCL or its
> affiliates. Any form of reproduction, dissemination, copying, disclosure, Modification, distribution and/or publication
> of this message without the prior written consent of the author of this e-mail is strictly prohibited. If you have
> received this email in error please delete it and notify the sender immediately. Before opening any mail and attachments
> please check them for viruses and defect.
> 
> -----------------------------------------------------------------------------------------------------------------------




More information about the Kernelnewbies mailing list