Linux DTrace development list
 help / color / mirror / Atom feed
* [PATCH] tests: add test for buggy deduplicator
@ 2025-01-09 16:47 Nick Alcock
  2025-01-09 17:09 ` [DTrace-devel] " Kris Van Hees
  2025-03-18 18:17 ` Kris Van Hees
  0 siblings, 2 replies; 5+ messages in thread
From: Nick Alcock @ 2025-01-09 16:47 UTC (permalink / raw)
  To: dtrace, dtrace-devel

Some early prototype deduplicators dedupped types in one dict (more or less)
rather than putting conflicting types and module types into
sub-dictionaries.  Fail if the running kernel is such a kernel.

Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
---
 dtrace.spec                  |  2 +-
 test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 1 deletion(-)
 create mode 100755 test/smoke/tst.ctf-intact.sh

diff --git a/dtrace.spec b/dtrace.spec
index 902ad7d8bb980..cf960f14b55c7 100644
--- a/dtrace.spec
+++ b/dtrace.spec
@@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
 Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
 Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
 Requires:     coreutils wireshark %{glibc32}
-Requires:     perf time bc nfs-utils
+Requires:     perf time bc nfs-utils binutils
 Autoreq:      0
 Group:	      Development/System
 
diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
new file mode 100755
index 0000000000000..d737a2b162fcb
--- /dev/null
+++ b/test/smoke/tst.ctf-intact.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+#
+# Oracle Linux DTrace.
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at
+# http://oss.oracle.com/licenses/upl.
+#
+
+#
+# This script verifies that the CTF, if present, is non-corrupt: in
+# particular, that it has at least one child with 
+#
+
+ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
+
+if [[ ! -f "$ctf" ]]; then
+    echo "CTF not found in expected location of $ctf" >&2
+    exit 67
+fi
+
+# If this is not an ELF file, turn it into one so objdump works.
+if ! [[ "$(file "$ctf")" =~ ELF ]]; then
+    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
+    ctf=$tmpdir/ctf
+fi
+
+# Dump the CTF
+objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
+    awk '
+BEGIN {
+    intypes=0;
+}
+
+/^  Strings:|^CTF archive member:/ {
+    intypes = 0;
+}
+# Scan for each member, capture its name.
+/^CTF archive member: / {
+    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
+    next;
+}
+# See if any non-shared dicts have any types in.
+/^  Types:/ {
+    if (member != "shared_ctf") {
+        intypes=1;
+    }
+}
+/^    0x/ {
+    if (intypes) {
+        exit (0);
+    }
+}
+END {
+    if (!intypes) {
+        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
+        exit (1);
+    }
+}'
-- 
2.47.1.279.g84c5f4e78e


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [DTrace-devel] [PATCH] tests: add test for buggy deduplicator
  2025-01-09 16:47 [PATCH] tests: add test for buggy deduplicator Nick Alcock
@ 2025-01-09 17:09 ` Kris Van Hees
  2025-03-18 18:17 ` Kris Van Hees
  1 sibling, 0 replies; 5+ messages in thread
From: Kris Van Hees @ 2025-01-09 17:09 UTC (permalink / raw)
  To: Nick Alcock; +Cc: dtrace, dtrace-devel

On Thu, Jan 09, 2025 at 04:47:10PM +0000, Nick Alcock via DTrace-devel wrote:
> Some early prototype deduplicators dedupped types in one dict (more or less)
> rather than putting conflicting types and module types into
> sub-dictionaries.  Fail if the running kernel is such a kernel.
> 
> Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
> ---
>  dtrace.spec                  |  2 +-
>  test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 59 insertions(+), 1 deletion(-)
>  create mode 100755 test/smoke/tst.ctf-intact.sh
> 
> diff --git a/dtrace.spec b/dtrace.spec
> index 902ad7d8bb980..cf960f14b55c7 100644
> --- a/dtrace.spec
> +++ b/dtrace.spec
> @@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
>  Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
>  Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
>  Requires:     coreutils wireshark %{glibc32}
> -Requires:     perf time bc nfs-utils
> +Requires:     perf time bc nfs-utils binutils
>  Autoreq:      0
>  Group:	      Development/System
>  
> diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
> new file mode 100755
> index 0000000000000..d737a2b162fcb
> --- /dev/null
> +++ b/test/smoke/tst.ctf-intact.sh
> @@ -0,0 +1,58 @@
> +#!/bin/bash
> +#
> +# Oracle Linux DTrace.
> +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
> +# Licensed under the Universal Permissive License v 1.0 as shown at
> +# http://oss.oracle.com/licenses/upl.
> +#
> +
> +#
> +# This script verifies that the CTF, if present, is non-corrupt: in
> +# particular, that it has at least one child with 

... rest of the sentence is missing?

> +#
> +
> +ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
> +
> +if [[ ! -f "$ctf" ]]; then
> +    echo "CTF not found in expected location of $ctf" >&2
> +    exit 67
> +fi
> +
> +# If this is not an ELF file, turn it into one so objdump works.
> +if ! [[ "$(file "$ctf")" =~ ELF ]]; then
> +    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
> +    ctf=$tmpdir/ctf
> +fi
> +
> +# Dump the CTF
> +objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
> +    awk '
> +BEGIN {
> +    intypes=0;
> +}
> +
> +/^  Strings:|^CTF archive member:/ {
> +    intypes = 0;
> +}
> +# Scan for each member, capture its name.
> +/^CTF archive member: / {
> +    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
> +    next;
> +}
> +# See if any non-shared dicts have any types in.
> +/^  Types:/ {
> +    if (member != "shared_ctf") {
> +        intypes=1;
> +    }
> +}
> +/^    0x/ {
> +    if (intypes) {
> +        exit (0);
> +    }
> +}
> +END {
> +    if (!intypes) {
> +        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
> +        exit (1);
> +    }
> +}'
> -- 
> 2.47.1.279.g84c5f4e78e
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel@oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tests: add test for buggy deduplicator
  2025-01-09 16:47 [PATCH] tests: add test for buggy deduplicator Nick Alcock
  2025-01-09 17:09 ` [DTrace-devel] " Kris Van Hees
@ 2025-03-18 18:17 ` Kris Van Hees
  2025-03-18 18:59   ` Eugene Loh
  1 sibling, 1 reply; 5+ messages in thread
From: Kris Van Hees @ 2025-03-18 18:17 UTC (permalink / raw)
  To: Nick Alcock; +Cc: dtrace, dtrace-devel

This seems like a test that would belong in the kernel tree rather than in
DTrace?  It seems like a weird tst to have included in DTrace because if it
fails, we cannot do anything about it in DTrace anyway.

I'd rather leave out tests that exercise things that are not DTrace itself.

On Thu, Jan 09, 2025 at 04:47:10PM +0000, Nick Alcock wrote:
> Some early prototype deduplicators dedupped types in one dict (more or less)
> rather than putting conflicting types and module types into
> sub-dictionaries.  Fail if the running kernel is such a kernel.
> 
> Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
> ---
>  dtrace.spec                  |  2 +-
>  test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 59 insertions(+), 1 deletion(-)
>  create mode 100755 test/smoke/tst.ctf-intact.sh
> 
> diff --git a/dtrace.spec b/dtrace.spec
> index 902ad7d8bb980..cf960f14b55c7 100644
> --- a/dtrace.spec
> +++ b/dtrace.spec
> @@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
>  Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
>  Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
>  Requires:     coreutils wireshark %{glibc32}
> -Requires:     perf time bc nfs-utils
> +Requires:     perf time bc nfs-utils binutils
>  Autoreq:      0
>  Group:	      Development/System
>  
> diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
> new file mode 100755
> index 0000000000000..d737a2b162fcb
> --- /dev/null
> +++ b/test/smoke/tst.ctf-intact.sh
> @@ -0,0 +1,58 @@
> +#!/bin/bash
> +#
> +# Oracle Linux DTrace.
> +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.

2024 -> 2025

> +# Licensed under the Universal Permissive License v 1.0 as shown at
> +# http://oss.oracle.com/licenses/upl.
> +#
> +
> +#
> +# This script verifies that the CTF, if present, is non-corrupt: in
> +# particular, that it has at least one child with 

The rest of the comment is missing?

> +#
> +
> +ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
> +
> +if [[ ! -f "$ctf" ]]; then
> +    echo "CTF not found in expected location of $ctf" >&2
> +    exit 67
> +fi
> +
> +# If this is not an ELF file, turn it into one so objdump works.
> +if ! [[ "$(file "$ctf")" =~ ELF ]]; then
> +    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
> +    ctf=$tmpdir/ctf
> +fi
> +
> +# Dump the CTF
> +objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
> +    awk '
> +BEGIN {
> +    intypes=0;
> +}
> +
> +/^  Strings:|^CTF archive member:/ {
> +    intypes = 0;
> +}
> +# Scan for each member, capture its name.
> +/^CTF archive member: / {
> +    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
> +    next;
> +}
> +# See if any non-shared dicts have any types in.
> +/^  Types:/ {
> +    if (member != "shared_ctf") {
> +        intypes=1;
> +    }
> +}
> +/^    0x/ {
> +    if (intypes) {
> +        exit (0);
> +    }
> +}
> +END {
> +    if (!intypes) {
> +        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
> +        exit (1);
> +    }
> +}'
> -- 
> 2.47.1.279.g84c5f4e78e
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tests: add test for buggy deduplicator
  2025-03-18 18:17 ` Kris Van Hees
@ 2025-03-18 18:59   ` Eugene Loh
  2025-03-18 19:01     ` Kris Van Hees
  0 siblings, 1 reply; 5+ messages in thread
From: Eugene Loh @ 2025-03-18 18:59 UTC (permalink / raw)
  To: Kris Van Hees, Nick Alcock; +Cc: dtrace, dtrace-devel

But if it is a dependency, it would be nice to know there is a problem.

On 3/18/25 14:17, Kris Van Hees wrote:
> This seems like a test that would belong in the kernel tree rather than in
> DTrace?  It seems like a weird tst to have included in DTrace because if it
> fails, we cannot do anything about it in DTrace anyway.
>
> I'd rather leave out tests that exercise things that are not DTrace itself.
>
> On Thu, Jan 09, 2025 at 04:47:10PM +0000, Nick Alcock wrote:
>> Some early prototype deduplicators dedupped types in one dict (more or less)
>> rather than putting conflicting types and module types into
>> sub-dictionaries.  Fail if the running kernel is such a kernel.
>>
>> Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
>> ---
>>   dtrace.spec                  |  2 +-
>>   test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
>>   2 files changed, 59 insertions(+), 1 deletion(-)
>>   create mode 100755 test/smoke/tst.ctf-intact.sh
>>
>> diff --git a/dtrace.spec b/dtrace.spec
>> index 902ad7d8bb980..cf960f14b55c7 100644
>> --- a/dtrace.spec
>> +++ b/dtrace.spec
>> @@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
>>   Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
>>   Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
>>   Requires:     coreutils wireshark %{glibc32}
>> -Requires:     perf time bc nfs-utils
>> +Requires:     perf time bc nfs-utils binutils
>>   Autoreq:      0
>>   Group:	      Development/System
>>   
>> diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
>> new file mode 100755
>> index 0000000000000..d737a2b162fcb
>> --- /dev/null
>> +++ b/test/smoke/tst.ctf-intact.sh
>> @@ -0,0 +1,58 @@
>> +#!/bin/bash
>> +#
>> +# Oracle Linux DTrace.
>> +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
> 2024 -> 2025
>
>> +# Licensed under the Universal Permissive License v 1.0 as shown at
>> +# http://oss.oracle.com/licenses/upl.
>> +#
>> +
>> +#
>> +# This script verifies that the CTF, if present, is non-corrupt: in
>> +# particular, that it has at least one child with
> The rest of the comment is missing?
>
>> +#
>> +
>> +ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
>> +
>> +if [[ ! -f "$ctf" ]]; then
>> +    echo "CTF not found in expected location of $ctf" >&2
>> +    exit 67
>> +fi
>> +
>> +# If this is not an ELF file, turn it into one so objdump works.
>> +if ! [[ "$(file "$ctf")" =~ ELF ]]; then
>> +    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
>> +    ctf=$tmpdir/ctf
>> +fi
>> +
>> +# Dump the CTF
>> +objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
>> +    awk '
>> +BEGIN {
>> +    intypes=0;
>> +}
>> +
>> +/^  Strings:|^CTF archive member:/ {
>> +    intypes = 0;
>> +}
>> +# Scan for each member, capture its name.
>> +/^CTF archive member: / {
>> +    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
>> +    next;
>> +}
>> +# See if any non-shared dicts have any types in.
>> +/^  Types:/ {
>> +    if (member != "shared_ctf") {
>> +        intypes=1;
>> +    }
>> +}
>> +/^    0x/ {
>> +    if (intypes) {
>> +        exit (0);
>> +    }
>> +}
>> +END {
>> +    if (!intypes) {
>> +        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
>> +        exit (1);
>> +    }
>> +}'
>> -- 
>> 2.47.1.279.g84c5f4e78e
>>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tests: add test for buggy deduplicator
  2025-03-18 18:59   ` Eugene Loh
@ 2025-03-18 19:01     ` Kris Van Hees
  0 siblings, 0 replies; 5+ messages in thread
From: Kris Van Hees @ 2025-03-18 19:01 UTC (permalink / raw)
  To: Eugene Loh; +Cc: Kris Van Hees, Nick Alcock, dtrace, dtrace-devel

On Tue, Mar 18, 2025 at 02:59:45PM -0400, Eugene Loh wrote:
> But if it is a dependency, it would be nice to know there is a problem.

I believe we would already know there is a problem because of other tests
failing.

> On 3/18/25 14:17, Kris Van Hees wrote:
> > This seems like a test that would belong in the kernel tree rather than in
> > DTrace?  It seems like a weird tst to have included in DTrace because if it
> > fails, we cannot do anything about it in DTrace anyway.
> > 
> > I'd rather leave out tests that exercise things that are not DTrace itself.
> > 
> > On Thu, Jan 09, 2025 at 04:47:10PM +0000, Nick Alcock wrote:
> > > Some early prototype deduplicators dedupped types in one dict (more or less)
> > > rather than putting conflicting types and module types into
> > > sub-dictionaries.  Fail if the running kernel is such a kernel.
> > > 
> > > Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
> > > ---
> > >   dtrace.spec                  |  2 +-
> > >   test/smoke/tst.ctf-intact.sh | 58 ++++++++++++++++++++++++++++++++++++
> > >   2 files changed, 59 insertions(+), 1 deletion(-)
> > >   create mode 100755 test/smoke/tst.ctf-intact.sh
> > > 
> > > diff --git a/dtrace.spec b/dtrace.spec
> > > index 902ad7d8bb980..cf960f14b55c7 100644
> > > --- a/dtrace.spec
> > > +++ b/dtrace.spec
> > > @@ -151,7 +151,7 @@ Requires:     %{name}-devel = %{version}-%{release} perl gcc java
> > >   Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
> > >   Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
> > >   Requires:     coreutils wireshark %{glibc32}
> > > -Requires:     perf time bc nfs-utils
> > > +Requires:     perf time bc nfs-utils binutils
> > >   Autoreq:      0
> > >   Group:	      Development/System
> > > diff --git a/test/smoke/tst.ctf-intact.sh b/test/smoke/tst.ctf-intact.sh
> > > new file mode 100755
> > > index 0000000000000..d737a2b162fcb
> > > --- /dev/null
> > > +++ b/test/smoke/tst.ctf-intact.sh
> > > @@ -0,0 +1,58 @@
> > > +#!/bin/bash
> > > +#
> > > +# Oracle Linux DTrace.
> > > +# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
> > 2024 -> 2025
> > 
> > > +# Licensed under the Universal Permissive License v 1.0 as shown at
> > > +# http://oss.oracle.com/licenses/upl.
> > > +#
> > > +
> > > +#
> > > +# This script verifies that the CTF, if present, is non-corrupt: in
> > > +# particular, that it has at least one child with
> > The rest of the comment is missing?
> > 
> > > +#
> > > +
> > > +ctf="/lib/modules/$(uname -r)/kernel/vmlinux.ctfa"
> > > +
> > > +if [[ ! -f "$ctf" ]]; then
> > > +    echo "CTF not found in expected location of $ctf" >&2
> > > +    exit 67
> > > +fi
> > > +
> > > +# If this is not an ELF file, turn it into one so objdump works.
> > > +if ! [[ "$(file "$ctf")" =~ ELF ]]; then
> > > +    objcopy --add-section=.ctf="$ctf" /bin/true $tmpdir/ctf
> > > +    ctf=$tmpdir/ctf
> > > +fi
> > > +
> > > +# Dump the CTF
> > > +objdump --ctf --ctf-parent=shared_ctf "$ctf" 2>/dev/null | \
> > > +    awk '
> > > +BEGIN {
> > > +    intypes=0;
> > > +}
> > > +
> > > +/^  Strings:|^CTF archive member:/ {
> > > +    intypes = 0;
> > > +}
> > > +# Scan for each member, capture its name.
> > > +/^CTF archive member: / {
> > > +    member=gensub (/CTF archive member: (.*):/,"\\1", "g");
> > > +    next;
> > > +}
> > > +# See if any non-shared dicts have any types in.
> > > +/^  Types:/ {
> > > +    if (member != "shared_ctf") {
> > > +        intypes=1;
> > > +    }
> > > +}
> > > +/^    0x/ {
> > > +    if (intypes) {
> > > +        exit (0);
> > > +    }
> > > +}
> > > +END {
> > > +    if (!intypes) {
> > > +        printf ("No non-shared-dict types found: probably buggy deduplicator.\n");
> > > +        exit (1);
> > > +    }
> > > +}'
> > > -- 
> > > 2.47.1.279.g84c5f4e78e
> > > 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-03-18 19:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-09 16:47 [PATCH] tests: add test for buggy deduplicator Nick Alcock
2025-01-09 17:09 ` [DTrace-devel] " Kris Van Hees
2025-03-18 18:17 ` Kris Van Hees
2025-03-18 18:59   ` Eugene Loh
2025-03-18 19:01     ` Kris Van Hees

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox