[DTrace-devel] [PATCH] tests: add test for buggy deduplicator

Eugene Loh eugene.loh at oracle.com
Tue Mar 18 18:59:45 UTC 2025


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 at 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
>>



More information about the DTrace-devel mailing list