nicupavel / emlog Goto Github PK
View Code? Open in Web Editor NEWemlog -- the EMbedded-system LOG-device
License: GNU General Public License v2.0
emlog -- the EMbedded-system LOG-device
License: GNU General Public License v2.0
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?
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.
As mentioned in a comment for #7, there are a few other race conditions:
emlog_info_list
manipulation (create_einfo()
vs free_einfo()
)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)).
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
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.