From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: Bug#285281: core dump on amd64 (gcc-3.4)
Date: Wed, 15 Dec 2004 13:27:13 +0000 [thread overview]
Message-ID: <1103117234.14134.69.camel@localhost.localdomain> (raw)
In-Reply-To: <20041215085045.GA4444@wonderland.linux.it>
On Wed, 2004-12-15 at 09:50 +0100, Marco d'Itri wrote:
> clsdev->directory is NULL, is this a bug in libsysfs or udev?
> Apparently this only happens on amd64.
>
> ----- Forwarded message from martin-deb@zero-based.org -----
> #0 0x0000000000403024 in sysfs_get_classdev_attr (clsdev=0x518260, name=0x40dcac "dev") at libsysfs/sysfs_class.c:643
> 643 if (clsdev->directory->subdirs = NULL)
> (gdb) backtrace
It is caused by the vc class behavior, to emit events on every open()
and close(). We get a lot of events on bootup for every vc device, cause
it is several times reopened. This causes the sysfs-dir to go away while
the device is opened in libsysfs. This simple test program:
#include <stdio.h>
#include <unistd.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include "libsysfs/sysfs/libsysfs.h"
int main(int argc, char *argv[], char *envp[])
{
struct sysfs_class_device *class_dev;
struct sysfs_attribute *attr;
mkdir("test-sys", 0775);
mkdir("test-sys/class", 0775);
mkdir("test-sys/class/test", 0775);
setenv("SYSFS_PATH", "test-sys", 1);
printf("open\n");
class_dev = sysfs_open_class_device_path("test-sys/class/test");
printf("%p\n", class_dev);
printf("rmdir\n");
rmdir("test-sys/class/test");
printf("read attr\n");
attr = sysfs_get_classdev_attr(class_dev, "dev");
}
segfaults every time:
[kay@pim udev.kay]$ gcc -g -I libsysfs/sysfs -I libsysfs -o bug bug.c libsysfs/sysfs.a
[kay@pim udev.kay]$ ./bug
open
0x804f0d8
rmdir
read attr
Segmentation fault
This seems to fix it:
=== libsysfs/sysfs_class.c 1.11 vs edited ==--- 1.11/libsysfs/sysfs_class.c 2004-10-20 05:15:26 +02:00
+++ edited/libsysfs/sysfs_class.c 2004-12-15 14:20:13 +01:00
@@ -640,6 +640,9 @@
return cur;
}
+ if (clsdev->directory = NULL)
+ return NULL;
+
if (clsdev->directory->subdirs = NULL)
if ((sysfs_read_dir_subdirs(clsdev->directory)) != 0 ||
clsdev->directory->subdirs = NULL)
Thanks,
Kay
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
next prev parent reply other threads:[~2004-12-15 13:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-12-15 8:50 Bug#285281: core dump on amd64 (gcc-3.4) Marco d'Itri
2004-12-15 12:25 ` Marco d'Itri
2004-12-15 13:27 ` Kay Sievers [this message]
2004-12-15 16:40 ` Daniel Stekloff
2004-12-16 4:55 ` Ananth N Mavinakayanahalli
2004-12-16 7:20 ` Kay Sievers
2004-12-17 19:07 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1103117234.14134.69.camel@localhost.localdomain \
--to=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).