Re: Aw: Re: RecursionError when try to check bindings (ubuntu 22.04 / Python3.10)

From: Krzysztof Kozlowski
Date: Mon Sep 04 2023 - 15:21:25 EST


On 04/09/2023 20:33, Frank Wunderlich wrote:
> Hi
>
>> Gesendet: Montag, 04. September 2023 um 20:18 Uhr
>> Von: "Krzysztof Kozlowski" <krzysztof.kozlowski@xxxxxxxxxx>
>> An: "Frank Wunderlich" <frank-w@xxxxxxxxxxxxxxx>, "Rob Herring" <robh+dt@xxxxxxxxxx>, "Krzysztof Kozlowski" <krzysztof.kozlowski+dt@xxxxxxxxxx>
>> Cc: devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
>> Betreff: Re: RecursionError when try to check bindings (ubuntu 22.04 / Python3.10)
>>
>> On 03/09/2023 13:08, Frank Wunderlich wrote:
>>> Hi,
>>>
>>> i tried to check a binding-file with 6.5 kernelsource and get this error
>>>
>>> LINT Documentation/devicetree/bindings
>>> CHKDT Documentation/devicetree/bindings/processed-schema.json
>>> SCHEMA Documentation/devicetree/bindings/processed-schema.json
>>> Traceback (most recent call last):
>>> File "/home/frank/.local/bin/dt-mk-schema", line 38, in <module>
>>> schemas = dtschema.DTValidator(args.schemas).schemas
>>> File "/home/frank/.local/lib/python3.10/site-packages/dtschema/validator.py", line 354, in __init__
>>> self.schemas = process_schemas(schema_files)
>>> File "/home/frank/.local/lib/python3.10/site-packages/dtschema/validator.py", line 271, in process_schemas
>>> sch = process_schema(os.path.abspath(filename))
>>> File "/home/frank/.local/lib/python3.10/site-packages/dtschema/validator.py", line 248, in process_schema
>>> dtsch.is_valid()
>>> File "/home/frank/.local/lib/python3.10/site-packages/dtschema/schema.py", line 145, in is_valid
>>> for error in self.DtValidator(self.DtValidator.META_SCHEMA).iter_errors(self):
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/validators.py", line 242, in iter_errors
>>> for error in errors:
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/_validators.py", line 362, in allOf
>>> yield from validator.descend(instance, subschema, schema_path=index)
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/validators.py", line 258, in descend
>>> for error in self.evolve(schema=schema).iter_errors(instance):
>>>
>>> block from line 242-258 repeats many times (~2000 lines in log)
>>>
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/validators.py", line 242, in iter_errors
>>> for error in errors:
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/_legacy_validators.py", line 216, in recursiveRef
>>> lookup_url, next_target = validator.resolver.resolve(each)
>>> File "/home/frank/.local/lib/python3.10/site-packages/jsonschema/validators.py", line 835, in resolve
>>> url = self._urljoin_cache(self.resolution_scope, ref).rstrip("/")
>>> RecursionError: maximum recursion depth exceeded in comparison
>>>
>>> make[2]: *** [Documentation/devicetree/bindings/Makefile:68: Documentation/devicetree/bindings/processed-schema.json] Error 1
>>> make[2]: *** Deleting file 'Documentation/devicetree/bindings/processed-schema.json'
>>> make[1]: *** [/media/data_nvme/git/kernel/BPI-R2-4.14/Makefile:1516: dt_binding_check] Error 2
>>> make: *** [Makefile:234: __sub-make] Error 2
>>>
>>> my command is (after importing defconfig, also tried a clean before):
>>>
>>> ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make dt_binding_check
>>>
>>> already did an update of dtschema with "pip3 install dtschema --upgrade" and also an uninstall/install of this python-package
>>>
>>> $ pip3 show dtschema
>>> Name: dtschema
>>> Version: 2023.7
>>> Summary: DeviceTree validation schema and tools
>>> Home-page: https://github.com/devicetree-org/dt-schema
>>> Author: Rob Herring
>>> Author-email: robh@xxxxxxxxxx
>>> License: BSD
>>> Location: /home/frank/.local/lib/python3.10/site-packages
>>> Requires: jsonschema, pylibfdt, rfc3987, ruamel.yaml
>>> Required-by:
>>>
>>> any idea what can be the cause?
>>
>> Can you share the reproduction steps? This probably is some error in
>> schema which is then not nicely handled by dtschema.
>
> there is not much more than i already told...
>
> git checkout v6.5 #to have clean mainline version
> ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make defconfig #use mainline default config
> ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make dt_binding_check
>
> it does not tell me a special binding file which is broken...it seems it has a problem with the self generated processed-schema.json, but it deletes the file.
>
> maybe there is a way to skip this removal to analyse this file...have looked into my site-packages, but have not found the position of file deletion
>
> btw. i get the same error also if i do not pass a file to dt-validate command...

Cannot reproduce it. Are you sure you are no mixing Python versions or
packages (e.g. pip and pip3)?

Best regards,
Krzysztof