Git Product home page Git Product logo

emlog's People

Contributors

ahippo avatar astifter avatar bkuhls avatar edmund-huber avatar funman avatar joe136 avatar morninglightmountain713 avatar nicupavel avatar rouzier avatar siboulet avatar tpetazzoni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

emlog's Issues

Corrupt data stream

Hi there, really like emlog, thank you all.

Was hoping you could point me in the right direction for some debug issues I’m having with emlog.

I’m writing data to an emlog device and reading from it.

Everything seems to work fine until the buffer fills up. (It is very dependent on the write rate I believe) if the write rate is slow the buffer wraps and I don’t have a problem.

My c program uses blocking reads, it sits there waiting for my other program to write. What I think is happening is that the head of the file is moving back over data I’ve already read. This is variable, sometimes I’ve noticed 512 bytes, sometimes 1322. I’m assuming it’s the size of the write that has just occurred.

Basically, means the next read I do is garbage. (Well, data I’ve already read) and my data stream is now corrupt.

This must be some sort of timing issue as when I go and hex dump the emlog device - the data is in the correct sequence again.

Do you have any idea how I could find out what is going on? Eg get the location of the head / tail of the buffer? Or how can I call get_einfo to get the data?

centos-6: kernel: sysfs: cannot create duplicate filename '/devices/virtual/emlog'

latest code and emlog-0.60 on a machine with kernel '2.6.32-642.el6.x86_64' (centos-6) produces the following kernel log errors:

Apr 2 17:56:43 smsgate3 kernel: emlog:emlog_init: version 0.70 running, major is 244, MINOR is 1, max size 1024 K.
Apr 2 17:56:43 smsgate3 kernel: ------------[ cut here ]------------
Apr 2 17:56:43 smsgate3 kernel: WARNING: at fs/sysfs/dir.c:512 sysfs_add_one+0xb8/0xd0() (Tainted: P W -- ------------ )
Apr 2 17:56:43 smsgate3 kernel: Hardware name: ProLiant DL380e Gen8
Apr 2 17:56:43 smsgate3 kernel: sysfs: cannot create duplicate filename '/devices/virtual/emlog'
Apr 2 17:56:43 smsgate3 kernel: Modules linked in: emlog(+)(U) nfnetlink_queue nfnetlink_log nfnetlink bluetooth rfkill tcp_diag inet_
diag ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_mod power_meter acpi_ipmi ip
mi_si ipmi_msghandler iTCO_wdt iTCO_vendor_support hpilo hpwdt igb i2c_algo_bit i2c_core ptp pps_core serio_raw sg lpc_ich mfd_core ioa
tdma dca shpchp ext4 jbd2 mbcache sd_mod crc_t10dif sr_mod cdrom oczvca(P)(U) oczpcie(U) hpsa ahci [last unloaded: emlog]
Apr 2 17:56:43 smsgate3 kernel: Pid: 491, comm: modprobe Tainted: P W -- ------------ 2.6.32-642.el6.x86_64 #1
Apr 2 17:56:43 smsgate3 kernel: Call Trace:
Apr 2 17:56:43 smsgate3 kernel: [] ? warn_slowpath_common+0x91/0xe0
Apr 2 17:56:43 smsgate3 kernel: [] ? warn_slowpath_fmt+0x46/0x60
Apr 2 17:56:43 smsgate3 kernel: [] ? sysfs_add_one+0xb8/0xd0
Apr 2 17:56:43 smsgate3 kernel: [] ? create_dir+0x68/0xb0
Apr 2 17:56:43 smsgate3 kernel: [] ? sysfs_create_dir+0x39/0x50
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add_internal+0xb9/0x260
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add_varg+0x38/0x60
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add+0x44/0x70
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_init+0x30/0xa0
Apr 2 17:56:43 smsgate3 kernel: [] ? get_device_parent+0x181/0x1d0
Apr 2 17:56:43 smsgate3 kernel: [] ? device_add+0x99/0x650
Apr 2 17:56:43 smsgate3 kernel: [] ? pm_runtime_init+0xd2/0xe0
Apr 2 17:56:43 smsgate3 kernel: [] ? device_register+0x1e/0x30
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create_vargs+0xe8/0x110
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create+0x31/0x40
Apr 2 17:56:43 smsgate3 kernel: [] ? __class_create+0x69/0xa0
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x187/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x0/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? do_one_initcall+0xc0/0x280
Apr 2 17:56:43 smsgate3 kernel: [] ? sys_init_module+0xe1/0x250
Apr 2 17:56:43 smsgate3 kernel: [] ? system_call_fastpath+0x16/0x1b
Apr 2 17:56:43 smsgate3 kernel: ---[ end trace f40e173682e20e66 ]---
Apr 2 17:56:43 smsgate3 kernel: kobject_add_internal failed for emlog with -EEXIST, don't try to register things with the same name in the same directory.
Apr 2 17:56:43 smsgate3 kernel: Pid: 491, comm: modprobe Tainted: P W -- ------------ 2.6.32-642.el6.x86_64 #1
Apr 2 17:56:43 smsgate3 kernel: Call Trace:
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add_internal+0x15d/0x260
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add_varg+0x38/0x60
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_add+0x44/0x70
Apr 2 17:56:43 smsgate3 kernel: [] ? kobject_init+0x30/0xa0
Apr 2 17:56:43 smsgate3 kernel: [] ? get_device_parent+0x181/0x1d0
Apr 2 17:56:43 smsgate3 kernel: [] ? device_add+0x99/0x650
Apr 2 17:56:43 smsgate3 kernel: [] ? pm_runtime_init+0xd2/0xe0
Apr 2 17:56:43 smsgate3 kernel: [] ? device_register+0x1e/0x30
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create_vargs+0xe8/0x110
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create+0x31/0x40
Apr 2 17:56:43 smsgate3 kernel: [] ? __class_create+0x69/0xa0
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x187/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x0/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? do_one_initcall+0xc0/0x280
Apr 2 17:56:43 smsgate3 kernel: [] ? sys_init_module+0xe1/0x250
Apr 2 17:56:43 smsgate3 kernel: [] ? system_call_fastpath+0x16/0x1b
Apr 2 17:56:43 smsgate3 kernel: ------------[ cut here ]------------
Apr 2 17:56:43 smsgate3 kernel: WARNING: at fs/sysfs/dir.c:512 sysfs_add_one+0xb8/0xd0() (Tainted: P W -- ------------ )
Apr 2 17:56:43 smsgate3 kernel: Hardware name: ProLiant DL380e Gen8
Apr 2 17:56:43 smsgate3 kernel: sysfs: cannot create duplicate filename '/dev/char/244:256'
Apr 2 17:56:43 smsgate3 kernel: Modules linked in: emlog(+)(U) nfnetlink_queue nfnetlink_log nfnetlink bluetooth rfkill tcp_diag inet_diag ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_mod power_meter acpi_ipmi ipmi_si ipmi_msghandler iTCO_wdt iTCO_vendor_support hpilo hpwdt igb i2c_algo_bit i2c_core ptp pps_core serio_raw sg lpc_ich mfd_core ioatdma dca shpchp ext4 jbd2 mbcache sd_mod crc_t10dif sr_mod cdrom oczvca(P)(U) oczpcie(U) hpsa ahci [last unloaded: emlog]
Apr 2 17:56:43 smsgate3 kernel: Pid: 491, comm: modprobe Tainted: P W -- ------------ 2.6.32-642.el6.x86_64 #1
Apr 2 17:56:43 smsgate3 kernel: Call Trace:
Apr 2 17:56:43 smsgate3 kernel: [] ? warn_slowpath_common+0x91/0xe0
Apr 2 17:56:43 smsgate3 kernel: [] ? warn_slowpath_fmt+0x46/0x60
Apr 2 17:56:43 smsgate3 kernel: [] ? sysfs_add_one+0xb8/0xd0
Apr 2 17:56:43 smsgate3 kernel: [] ? sysfs_do_create_link+0x12b/0x170
Apr 2 17:56:43 smsgate3 kernel: [] ? sysfs_create_link+0x13/0x20
Apr 2 17:56:43 smsgate3 kernel: [] ? device_add+0x317/0x650
Apr 2 17:56:43 smsgate3 kernel: [] ? pm_runtime_init+0xd2/0xe0
Apr 2 17:56:43 smsgate3 kernel: [] ? device_register+0x1e/0x30
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create_vargs+0xe8/0x110
Apr 2 17:56:43 smsgate3 kernel: [] ? device_create+0x31/0x40
Apr 2 17:56:43 smsgate3 kernel: [] ? __class_create+0x69/0xa0
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x187/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? emlog_init+0x0/0x20b [emlog]
Apr 2 17:56:43 smsgate3 kernel: [] ? do_one_initcall+0xc0/0x280
Apr 2 17:56:43 smsgate3 kernel: [] ? sys_init_module+0xe1/0x250
Apr 2 17:56:43 smsgate3 kernel: [] ? system_call_fastpath+0x16/0x1b
Apr 2 17:56:43 smsgate3 kernel: ---[ end trace f40e173682e20e67 ]---

any assistance would be appriciated.

Racy einfo allocation and emlog_info_list manipulation

As mentioned in a comment for #7, there are a few other race conditions:

  • with emlog_info_list manipulation (create_einfo() vs free_einfo())
  • with new einfo allocation (get_einfo() vs create_einfo())

This may cause memory leaks or crashes during concurrent opening of new emlog buffers,
or concurrent closing/opening of an emlog device (when loaded with emlog_autofree=1 (defaults to off)).

Debian packaging

Thank you for emlog, very useful piece of code !

For those looking for debian packages, I've setup up debian packaging in repository: https://github.com/bbinet/emlog-dkms
It generates the following debian packages

  • emlog-dkms (which provides emlog kernel module only, through dkms)
  • emlog-bin (which provides nbcat & mkemlog binaries)

insmod: ERROR: could not insert module emlog.ko: Invalid module format

Hello,

I would really like to use this module, but I get the error above, compilation is fine:

[root@ip-172-30-0-16 emlog]# make KDIR=/usr/src/kernels/4.14.173-137.228.amzn2.x86_64/ make -C /usr/src/kernels/4.14.173-137.228.amzn2.x86_64/ M=/root/emlog modules make[1]: Entering directory /usr/src/kernels/4.14.173-137.228.amzn2.x86_64'
CC [M] /root/emlog/emlog.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/emlog/emlog.mod.o
LD [M] /root/emlog/emlog.ko
make[1]: Leaving directory /usr/src/kernels/4.14.173-137.228.amzn2.x86_64' cc -o nbcat nbcat.c -Wall -O2 cc -o mkemlog mkemlog.c -Wall -O2

but the loading not:

[root@ip-172-30-0-16 emlog]# insmod emlog.ko insmod: ERROR: could not insert module emlog.ko: Invalid module format

Do I need a different configuration? does it work with recent kernels?
Thanks for any reply.

Cheers,
Mauro

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.