----- Original Message ----- > Hi Dave, > > my bad. > > Since you've made some simplifications in my patch, I hope it's ok to make > short patch. Hi Alex, I've run into three problems dealing with embedded arrays. First, should array elements inside an embedded structure be selectable? For example, the task_struct has an embedded task_rss_stat structure: crash> task_struct.rss_stat struct task_struct { [456] struct task_rss_stat rss_stat; } that contains a "count" array: crash> task_rss_stat struct task_rss_stat { int events; int count[3]; } SIZE: 16 I can display the whole thing: crash> task -R rss_stat PID: 11722 TASK: ffff8801073da5d0 CPU: 0 COMMAND: "crash" rss_stat = { events = 11, count = {0, 0, 0} }, Or break it down into its two members, individually or both at the same time: crash> task -R rss_stat.events PID: 11722 TASK: ffff8801073da5d0 CPU: 1 COMMAND: "crash" rss_stat.events = 13, crash> task -R rss_stat.count PID: 11722 TASK: ffff8801073da5d0 CPU: 1 COMMAND: "crash" rss_stat.count = {0, 0, 0} crash> task -R rss_stat.events,rss_stat.count PID: 11722 TASK: ffff8801073da5d0 CPU: 1 COMMAND: "crash" rss_stat.events = 14, rss_stat.count = {0, 0, 0} But trying to access a member of the rss_stat.count[] array fails: crash> task -R rss_stat.count[1] PID: 11722 TASK: ffff8801073da5d0 CPU: 2 COMMAND: "crash" task: invalid structure member reference: rss_stat.count[1] crash> Is that expected behavior? Secondly, on a somewhat related note, this seems strange. The task_struct has an embedded array of 3 pid_link structures: crash> task_struct.pids struct task_struct { [608] struct pid_link pids[3]; } Here they are all dumped: crash> task -R pids PID: 11722 TASK: ffff8801073da5d0 CPU: 2 COMMAND: "crash" pids = {{ node = { next = 0x0, pprev = 0xffff880105fc9888 }, pid = 0xffff880105fc9880 }, { node = { next = 0xffff880209d01198, pprev = 0xffff880209d05d38 }, pid = 0xffff88000eeefd00 }, { node = { next = 0xffff880209d011b0, pprev = 0xffff880209d05d50 }, pid = 0xffff88010d07ed00 }}, Or I can pick just one member of the array: crash> task -R pids[1] PID: 11722 TASK: ffff8801073da5d0 CPU: 0 COMMAND: "crash" pids[1] = { node = { next = 0xffff880209d01198, pprev = 0xffff880209d02848 }, pid = 0xffff88000eeefd00 }, And refine it further by asking for just the "node" member: crash> task -R pids[1].node PID: 11722 TASK: ffff8801073da5d0 CPU: 0 COMMAND: "crash" pids[1].node = { next = 0xffff880209d01198, pprev = 0xffff880209d02848 }, But for some reason, it fails to accept the "pid_link.pid" member: crash> task -R pids[1].pid PID: 11722 TASK: ffff8801073da5d0 CPU: 0 COMMAND: "crash" task: invalid structure member reference: pids[1].pid And third, this behavior also doesn't seem correct. Here again I select just the first element of the task_struct.pids[] array: crash> task -R pids[0].node PID: 11722 TASK: ffff8801073da5d0 CPU: 2 COMMAND: "crash" pids[0].node = { next = 0x0, pprev = 0xffff880105fc9888 }, But it allows me to leave off the "pids[x]" reference, and if so, it defaults to the first member of the array: crash> task -R pids.node PID: 11722 TASK: ffff8801073da5d0 CPU: 0 COMMAND: "crash" pids.node = { next = 0x0, pprev = 0xffff880105fc9888 }, Should it reject that syntax? Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility