The records.config file is the only one that has been changed from the default one, and only two lines are different:

CONFIG proxy.config.cluster.ethernet_interface STRING venet0:0

this is the virtualized network interface for the Virtuozzo platform and

CONFIG proxy.config.url_remap.remap_required INT 0

to allow to work as a forward proxy (the only mode I'm trying to use it in)

I have not attached any other files, since they are all untouched.

install path
========

The install path I've used is a custom one (/simpl/apps/trafficserver/trunk, which is linked to from /simpl/apps/trafficserver/default), and uses some symlinks - though it's working on my laptop using exactly the same setup script I've written.

I will try installing in the default path to see if that makes a difference.

Marcus Clyne
added a comment - 20/Mar/10 21:43 - edited records.config
===========
The records.config file is the only one that has been changed from the default one, and only two lines are different:
CONFIG proxy.config.cluster.ethernet_interface STRING venet0:0
this is the virtualized network interface for the Virtuozzo platform and
CONFIG proxy.config.url_remap.remap_required INT 0
to allow to work as a forward proxy (the only mode I'm trying to use it in)
I have not attached any other files, since they are all untouched.
install path
========
The install path I've used is a custom one (/simpl/apps/trafficserver/trunk, which is linked to from /simpl/apps/trafficserver/default), and uses some symlinks - though it's working on my laptop using exactly the same setup script I've written.
I will try installing in the default path to see if that makes a difference.

Marcus Clyne
added a comment - 21/Mar/10 12:23 I've checked the same procedure with 2.0.1, and there are no problems on both my 64bit laptop and 32bit Virtuozzo VPS - only 32-bit 2.1.0 (not sure about other ones in the 2.1-branch).

Looking at the code path the problem is most likely a kernel version issue. From the eventfd() man page it looks like for linux kernels <=2.6.26 the 'flags' argument is unused and must be specified as zero. Try changing the line 'UnixEThread.cc:67' to

George Paul
added a comment - 21/Mar/10 17:36 Hi Marcus,
Looking at the code path the problem is most likely a kernel version issue. From the eventfd() man page it looks like for linux kernels <=2.6.26 the 'flags' argument is unused and must be specified as zero. Try changing the line 'UnixEThread.cc:67' to
evfd = eventfd(0, 0);
recompile and test it out.
regards,
-George

Please notice, that after I changed line 67 to the following code and remaked the code
/* evfd = eventfd(0, O_NONBLOCK | FD_CLOEXEC);*/
evfd = eventfd(0, 0);

I received the error:
FATAL: UnixEThread.cc:71: failed assert `(evfd = eventfd(0,0)) >= 0`
(The error moved from line 70 to 71 due to the commented line, which means that server really runs the updated code)

P.S I'm using the Amazon EC2 default EBS based Fedora core 8. Let me know if you need more information

George Paul
added a comment - 23/Mar/10 01:46 I should have mentioned to the change the assert check into printing out the 'errno' instead in case 'evfd < 0' so we can see why the syscall is failing.
-G

Jason Giedymin
added a comment - 23/Mar/10 18:02 For the record I can reproduce this error on EC2 using Fedora Core 8 kernel 2.6.21.7-2.ec2.v1.2.fc8xen.
I was able to use George's code comment above and ripped out the assert for a quick test. ATS was then working correctly after I did this.

Jason Giedymin
added a comment - 24/Mar/10 13:44 - edited I sent this to the list, (though this is updated)
My first instinct as a driver developer is to do:
#if KERNEL_VERSION <= LINUX_VERSION_CODE(2,6,26)
Use 2.6.2 API version of eventfd
#else
Use 2.6.27 API version of eventfd
#endif
...
Maybe wrap it, so it doesn't clutter the file up dunno
Thoughts?

Jason,
I agree that as driver developer what you suggested above is the way to go. The other way is to test for which eventfd() usage works in configure which is a bit more work. I'm okay if you go the first route but make a note of it, maybe in a comment.
-George

George Paul
added a comment - 24/Mar/10 14:41 Jason,
I agree that as driver developer what you suggested above is the way to go. The other way is to test for which eventfd() usage works in configure which is a bit more work. I'm okay if you go the first route but make a note of it, maybe in a comment.
-George

George Paul
added a comment - 26/Mar/10 16:10 These fixes are only applicable to 2.1/trunk branch where eventfd() support was added and used as the default instead of default pipes usage in 2.0.x.
-George