Skip to content

Conversation

@sdimitro
Copy link
Contributor

@sdimitro sdimitro commented Jul 5, 2023

Before this patch sdb fails with the following error in our most current kernels:

sdb> stacks -m zfs
TASK_STRUCT        STATE             COUNT
==========================================
sdb encountered an internal error due to a bug. Here's the
information you need to file the bug:
----------------------------------------------------------
Target Info:
	ProgramFlags.IS_LIVE|IS_LINUX_KERNEL
	Platform(<Architecture.X86_64: 1>, <PlatformFlags.IS_LITTLE_ENDIAN|IS_64_BIT: 3>)

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/sdb/internal/repl.py", line 107, in eval_cmd
    for obj in invoke([], input_):
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 152, in invoke
    yield from execute_pipeline(first_input, pipeline)
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 84, in execute_pipeline
    yield from massage_input_and_call(pipeline[-1], this_input)
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 67, in massage_input_and_call
    yield from cmd.call(objs)
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 413, in call
    yield from self.__invalid_memory_objects_check(
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 358, in __invalid_memory_objects_check
    for obj in objs:
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 625, in _call
    self.pretty_print(self.caller(objs))
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 401, in pretty_print
    self.print_stacks(filter(self.match_stack, objs))
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 376, in print_stacks
    for stack_key, tasks in KernelStacks.aggregate_stacks(objs):
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 369, in aggregate_stacks
    stack_key = (KernelStacks.task_struct_get_state(task),
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 210, in task_struct_get_state
    state = task.state.value_()
AttributeError: 'struct task_struct' has no member 'state'
----------------------------------------------------------
Link: https://github.com/delphix/sdb/issues/new

This patch fixes that regression

= Github Issue Tracker Automation

Closes #325

Before this patch `sdb` fails with the following error in our most
current kernels:
```
sdb> stacks -m zfs
TASK_STRUCT        STATE             COUNT
==========================================
sdb encountered an internal error due to a bug. Here's the
information you need to file the bug:
----------------------------------------------------------
Target Info:
	ProgramFlags.IS_LIVE|IS_LINUX_KERNEL
	Platform(<Architecture.X86_64: 1>, <PlatformFlags.IS_LITTLE_ENDIAN|IS_64_BIT: 3>)

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/sdb/internal/repl.py", line 107, in eval_cmd
    for obj in invoke([], input_):
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 152, in invoke
    yield from execute_pipeline(first_input, pipeline)
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 84, in execute_pipeline
    yield from massage_input_and_call(pipeline[-1], this_input)
  File "/usr/lib/python3/dist-packages/sdb/pipeline.py", line 67, in massage_input_and_call
    yield from cmd.call(objs)
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 413, in call
    yield from self.__invalid_memory_objects_check(
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 358, in __invalid_memory_objects_check
    for obj in objs:
  File "/usr/lib/python3/dist-packages/sdb/command.py", line 625, in _call
    self.pretty_print(self.caller(objs))
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 401, in pretty_print
    self.print_stacks(filter(self.match_stack, objs))
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 376, in print_stacks
    for stack_key, tasks in KernelStacks.aggregate_stacks(objs):
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 369, in aggregate_stacks
    stack_key = (KernelStacks.task_struct_get_state(task),
  File "/usr/lib/python3/dist-packages/sdb/commands/linux/stacks.py", line 210, in task_struct_get_state
    state = task.state.value_()
AttributeError: 'struct task_struct' has no member 'state'
----------------------------------------------------------
Link: https://github.com/delphix/sdb/issues/new
```

This patch fixes that regression

= Github Issue Tracker Automation

Closes delphix#325
@sdimitro sdimitro merged commit a2bdd57 into delphix:develop Jul 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

[4/7/23] [BUG]: task_struct in 5.15 kernel no longer has "state" member

3 participants