.... or not regession, that's the question.
2.6.16-rc2 works without problems.
With -rc3 a .swf that opens a ip connection back to the server takes ages to
load. strace shows that the player hangs for long times in select().
Digging through the changelog brings up
commit 643a654540579b0dcc7a206a4a7475276a41aff0
Author: Andrew Morton <[email protected]>
Date: Sat Feb 11 17:55:52 2006 -0800
[PATCH] select: fix returned timeval
Reverting the patch partial like
--- lx-2.6.16-rc3/fs/select.c 2006-02-17 04:35:10.000000000 +0100
+++ lx-2.6.16-rc3.old/fs/select.c 2006-02-17 04:44:00.000000000 +0100
@@ -404,8 +404,6 @@ asmlinkage long sys_select(int n, fd_set
goto sticky;
rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
rtv.tv_sec = timeout;
- if (timeval_compare(&rtv, &tv) < 0)
- rtv = tv;
if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
sticky:
/*
@@ -471,8 +469,6 @@ asmlinkage long sys_pselect7(int n, fd_s
rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ))
*
1000;
rts.tv_sec = timeout;
- if (timespec_compare(&rts, &ts) < 0)
- rts = ts;
if (copy_to_user(tsp, &rts, sizeof(rts))) {
sticky:
/*
----------------------
fixed that, the player works again in normal speed.
The player is the newest from macromedia (7.0.61.0, gentoo ebuild), binary
only of course:( Reading the patch and the documentation of select() i think
the player is buggy... but works until 2.6.16-rc3
So what is your opinion? I think, macromedia should fix the player...
Thanks
<earny/>
Ernst Herzberg <[email protected]> wrote:
>
> .... or not regession, that's the question.
>
> 2.6.16-rc2 works without problems.
>
> With -rc3 a .swf that opens a ip connection back to the server takes ages to
> load. strace shows that the player hangs for long times in select().
>
> Digging through the changelog brings up
>
> commit 643a654540579b0dcc7a206a4a7475276a41aff0
> Author: Andrew Morton <[email protected]>
> Date: Sat Feb 11 17:55:52 2006 -0800
>
> [PATCH] select: fix returned timeval
Thanks for working that out.
Are you able to send along the relevant parts of the strace output, so we
see the select() inputs and outputs?
Ernst Herzberg <[email protected]> wrote:
>
> .... or not regession, that's the question.
>
> 2.6.16-rc2 works without problems.
>
> With -rc3 a .swf that opens a ip connection back to the server takes ages to
> load. strace shows that the player hangs for long times in select().
>
> Digging through the changelog brings up
>
> commit 643a654540579b0dcc7a206a4a7475276a41aff0
> Author: Andrew Morton <[email protected]>
> Date: Sat Feb 11 17:55:52 2006 -0800
>
> [PATCH] select: fix returned timeval
y'know, when I sent that patch out to reviewers I said "Could you guys
please double-check this like hawks? Especially the handy-dandy new
timespec/timeval comparison functions. I invariably screw that sort of
thing up."
Does this help?
diff -puN fs/select.c~select-time-comparison-fixes fs/select.c
--- devel/fs/select.c~select-time-comparison-fixes 2006-02-16 23:17:54.000000000 -0800
+++ devel-akpm/fs/select.c 2006-02-16 23:19:21.000000000 -0800
@@ -404,7 +404,7 @@ asmlinkage long sys_select(int n, fd_set
goto sticky;
rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
rtv.tv_sec = timeout;
- if (timeval_compare(&rtv, &tv) < 0)
+ if (timeval_compare(&rtv, &tv) >= 0)
rtv = tv;
if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
sticky:
@@ -471,7 +471,7 @@ asmlinkage long sys_pselect7(int n, fd_s
rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
1000;
rts.tv_sec = timeout;
- if (timespec_compare(&rts, &ts) < 0)
+ if (timespec_compare(&rts, &ts) >= 0)
rts = ts;
if (copy_to_user(tsp, &rts, sizeof(rts))) {
sticky:
@@ -775,7 +775,7 @@ asmlinkage long sys_ppoll(struct pollfd
rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
1000;
rts.tv_sec = timeout;
- if (timespec_compare(&rts, &ts) < 0)
+ if (timespec_compare(&rts, &ts) >= 0)
rts = ts;
if (copy_to_user(tsp, &rts, sizeof(rts))) {
sticky:
diff -puN fs/compat.c~select-time-comparison-fixes fs/compat.c
--- devel/fs/compat.c~select-time-comparison-fixes 2006-02-16 23:17:54.000000000 -0800
+++ devel-akpm/fs/compat.c 2006-02-16 23:19:33.000000000 -0800
@@ -1757,7 +1757,7 @@ asmlinkage long compat_sys_select(int n,
goto sticky;
rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
rtv.tv_sec = timeout;
- if (compat_timeval_compare(&rtv, &tv) < 0)
+ if (compat_timeval_compare(&rtv, &tv) >= 0)
rtv = tv;
if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
sticky:
@@ -1834,7 +1834,7 @@ asmlinkage long compat_sys_pselect7(int
rts.tv_sec++;
rts.tv_nsec -= NSEC_PER_SEC;
}
- if (compat_timespec_compare(&rts, &ts) < 0)
+ if (compat_timespec_compare(&rts, &ts) >= 0)
rts = ts;
copy_to_user(tsp, &rts, sizeof(rts));
}
@@ -1934,7 +1934,7 @@ asmlinkage long compat_sys_ppoll(struct
rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
1000;
rts.tv_sec = timeout;
- if (compat_timespec_compare(&rts, &ts) < 0)
+ if (compat_timespec_compare(&rts, &ts) >= 0)
rts = ts;
if (copy_to_user(tsp, &rts, sizeof(rts))) {
sticky:
_
On Freitag 17 Februar 2006 08:10, Andrew Morton wrote:
> Ernst Herzberg <[email protected]> wrote:
> > .... or not regession, that's the question.
> >
> > 2.6.16-rc2 works without problems.
> >
> > With -rc3 a .swf that opens a ip connection back to the server takes
> > ages to load. strace shows that the player hangs for long times in
> > select().
> >
> > Digging through the changelog brings up
> >
> > commit 643a654540579b0dcc7a206a4a7475276a41aff0
> > Author: Andrew Morton <[email protected]>
> > Date: Sat Feb 11 17:55:52 2006 -0800
> >
> > [PATCH] select: fix returned timeval
>
> Thanks for working that out.
>
> Are you able to send along the relevant parts of the strace output, so
> we see the select() inputs and outputs?
The straces are available at
http://dev.net4u.de/~earny/flash_regression/
If someone want to debug this by itself should contact me private, i will
then setup an URL with the problematic swf.
Thanks
<earny/>
On Freitag 17 Februar 2006 08:23, Andrew Morton wrote:
> Ernst Herzberg <[email protected]> wrote:
> > .... or not regession, that's the question.
> >
> > 2.6.16-rc2 works without problems.
> >
> > With -rc3 a .swf that opens a ip connection back to the server takes
> > ages to load. strace shows that the player hangs for long times in
> > select().
> >
> > Digging through the changelog brings up
> >
> > commit 643a654540579b0dcc7a206a4a7475276a41aff0
> > Author: Andrew Morton <[email protected]>
> > Date: Sat Feb 11 17:55:52 2006 -0800
> >
> > [PATCH] select: fix returned timeval
>
> y'know, when I sent that patch out to reviewers I said "Could you guys
> please double-check this like hawks? Especially the handy-dandy new
> timespec/timeval comparison functions. I invariably screw that sort of
> thing up."
>
> Does this help?
>
>
> diff -puN fs/select.c~select-time-comparison-fixes fs/select.c
> --- devel/fs/select.c~select-time-comparison-fixes 2006-02-16
> 23:17:54.000000000 -0800 +++ devel-akpm/fs/select.c 2006-02-16
> 23:19:21.000000000 -0800
> @@ -404,7 +404,7 @@ asmlinkage long sys_select(int n, fd_set
> goto sticky;
> rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
> rtv.tv_sec = timeout;
> - if (timeval_compare(&rtv, &tv) < 0)
> + if (timeval_compare(&rtv, &tv) >= 0)
> rtv = tv;
> if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
> sticky:
> @@ -471,7 +471,7 @@ asmlinkage long sys_pselect7(int n, fd_s
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (timespec_compare(&rts, &ts) < 0)
> + if (timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> @@ -775,7 +775,7 @@ asmlinkage long sys_ppoll(struct pollfd
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (timespec_compare(&rts, &ts) < 0)
> + if (timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> diff -puN fs/compat.c~select-time-comparison-fixes fs/compat.c
> --- devel/fs/compat.c~select-time-comparison-fixes 2006-02-16
> 23:17:54.000000000 -0800 +++ devel-akpm/fs/compat.c 2006-02-16
> 23:19:33.000000000 -0800
> @@ -1757,7 +1757,7 @@ asmlinkage long compat_sys_select(int n,
> goto sticky;
> rtv.tv_usec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ));
> rtv.tv_sec = timeout;
> - if (compat_timeval_compare(&rtv, &tv) < 0)
> + if (compat_timeval_compare(&rtv, &tv) >= 0)
> rtv = tv;
> if (copy_to_user(tvp, &rtv, sizeof(rtv))) {
> sticky:
> @@ -1834,7 +1834,7 @@ asmlinkage long compat_sys_pselect7(int
> rts.tv_sec++;
> rts.tv_nsec -= NSEC_PER_SEC;
> }
> - if (compat_timespec_compare(&rts, &ts) < 0)
> + if (compat_timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> copy_to_user(tsp, &rts, sizeof(rts));
> }
> @@ -1934,7 +1934,7 @@ asmlinkage long compat_sys_ppoll(struct
> rts.tv_nsec = jiffies_to_usecs(do_div((*(u64*)&timeout), HZ)) *
> 1000;
> rts.tv_sec = timeout;
> - if (compat_timespec_compare(&rts, &ts) < 0)
> + if (compat_timespec_compare(&rts, &ts) >= 0)
> rts = ts;
> if (copy_to_user(tsp, &rts, sizeof(rts))) {
> sticky:
> _
---------------------------
The patch does _not_ fix the problem.
sorry...
<earny/>
Ernst Herzberg <[email protected]> wrote:
>
> The patch does _not_ fix the problem.
>
Surprised. Could I ask that you double-check that the patch was applied
and that the right kernel was running?
On Friday 17 February 2006 22:16, Andrew Morton wrote:
> Ernst Herzberg <[email protected]> wrote:
> > The patch does _not_ fix the problem.
>
> Surprised. Could I ask that you double-check that the patch was applied
> and that the right kernel was running?
**doublechecked**, and..... you are right!
This patch __fixes__ the problem.
Thanks
<earny/>
Ernst Herzberg <[email protected]> wrote:
>
> On Friday 17 February 2006 22:16, Andrew Morton wrote:
> > Ernst Herzberg <[email protected]> wrote:
> > > The patch does _not_ fix the problem.
> >
> > Surprised. Could I ask that you double-check that the patch was applied
> > and that the right kernel was running?
>
> **doublechecked**, and..... you are right!
>
> This patch __fixes__ the problem.
>
Whew. I thought I was going mad ;)
Thanks for finding the bug.