GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Update dynamic logging to work with Go's 1.17+ calling convention by ddelnano · Pull Request #2108 · pixie-io/pixie

Conversation

@ddelnano

@ddelnano ddelnano commented Feb 3, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Summary: Update dynamic logging to work with Go's 1.17+ calling convention

Despite our earlier messaging that dynamic logging would be deprecated in #2105, I decided that it was easier to handle the new ABI instead of deprecating the Go parts of the dynamic tracer. My rationale for this is that the blocker for achieving feature parity for the new Go ABI, handling STRUCT_BLOB variables, is actually a concern for c/c++ tracepoint programs as well. I felt it was important to keep the dynamic tracer rather than deprecate it entirely.

As mentioned above, this change does not have full feature parity with the legacy ABI since STRUCT_BLOB variables don't work with register based calling conventions -- these variables copy a blob of memory with the assumption that a packed struct exists in a contiguous chunk of memory. However, this isn't unique to Go binaries as c/c++ applications can pass certain structs via registers as well.

This change replaces the previous Go STRUCT_BLOB tests with C equivalents that pass the variable on the stack. When a struct variable will be passed via a register, dynamic logging will now return an error and suggest to the user to access struct fields individually. This error and the test cases that assert the error is returned can be reverted to their original form once #2106 is complete.

Relevant Issues: #2105

Type of change: /kind cleanup

Test Plan: Existing tests pass and new ones were added where coverage was needed

Changelog Message: Update Go dynamic logging feature to support Go 1.17+ binaries

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ddelnano
ddelnano marked this pull request as ready for review February 3, 2025 17:14
@ddelnano
ddelnano requested a review from a team as a code owner February 3, 2025 17:14
ddelnano added 4 commits February 3, 2025 18:33
@ddelnano
Update dynamic logging to work with new Go ABI
4b5947d
This change has parity with the previous ABI's implementation with the
exception of handling structs that are passed via registers. This will
be handled in a later change

Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano
Return error when register stored structs are used. Add CPP STRUCT_BL…
503ad02
…OB coverage for struct variables

Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano
Add register based CPP struct test
66cb4ab
Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano
Fix linting
5642386
Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano
ddelnano force-pushed the ddelnano/update-dynamic-tracer-with-go-regabi-rebase2 branch from 1457947 to 5642386 Compare February 3, 2025 18:33
@ddelnano ddelnano mentioned this pull request Feb 10, 2025
Upgrade rules_go to v0.47.1 for go 1.22 support #2113
Merged
ddelnano added a commit that referenced this pull request Feb 11, 2025
@ddelnano
Upgrade rules_go to v0.47.1 for go 1.22 support (#2113)
b122242
Summary: Upgrade rules_go to v0.47.1 for go 1.22 support

The work to remove our dependence on go 1.16 will be complete soon (once
#2108 is merged). With that done, we can upgrade our go dependencies and
go version. This rules_go change is needed to support go 1.22 as there
was an assembler fix in
[v0.46.0](https://github.com/bazel-contrib/rules_go/releases/tag/v0.46.0)
(bazel-contrib/rules_go#3756 specifically).

This was the most recent rules_go version I could upgrade to without
dealing with breaking changes. I'll revisit upgrading this to a newer
version soon, but my primary goal was to be able to upgrade go and our
go deps.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Existing tests and verified my branch to add go 1.22 as a
supported version builds properly

Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano ddelnano mentioned this pull request Feb 11, 2025
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions #2116
Merged
oazizi000
oazizi000 reviewed Feb 11, 2025
View reviewed changes

@oazizi000 oazizi000 left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we document somewhere what versions we will support. Should we officially deprecate support for Go 1.16?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/stirling/source_connectors/dynamic_tracer/dynamic_tracing/dwarvifier.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

@ddelnano
Fix misspelling
1bcaef2
Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano ddelnano mentioned this pull request Feb 11, 2025
Update dynamic logging docs to reflect new Go version requirement pixie-io/docs.px.dev#294
Merged
@ddelnano

ddelnano commented Feb 11, 2025

Copy link
Copy Markdown
Member Author

@oazizi000 I think that makes sense. I've updated the docs in pixie-io/docs.px.dev#294. That page is linked in Pixie's README and is essentially the documentation for the feature.

I'll also post an update on #666 stating that the feature was updated to support Go 1.17+.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

oazizi000
oazizi000 approved these changes Feb 11, 2025
View reviewed changes
@ddelnano
ddelnano merged commit 8232eee into pixie-io:main Feb 11, 2025
@ddelnano
ddelnano deleted the ddelnano/update-dynamic-tracer-with-go-regabi-rebase2 branch February 11, 2025 18:47
ddelnano added a commit that referenced this pull request Feb 11, 2025
@ddelnano
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions (#…
09ade3b
…2116)

Summary: Add go 1.22 and 1.23 to socket tracer tests. Bump minor go
versions

This PR adds Go 1.22 and 1.23 to the socket tracer test suite in
anticipation of removing Go 1.16 and 1.17 from our repo once #2108 is
merged. The plan is to follow this up with a change that removes Go 1.16
and 1.17 in addition to upgrading a portion of our Go dependencies. The
bulk of our dependencies still support Go 1.18, so this will allow us to
upgrade to the latest versions.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Test suite passes

---------

Signed-off-by: Dom Del Nano <[email protected]>
@ddelnano ddelnano mentioned this pull request Jun 9, 2025
Request for Feedback: Dynamic Logging's future (Should we deprecate Dynamic Logging?) #666
Closed
ddelnano added a commit to ddelnano/pixie that referenced this pull request Aug 6, 2025
@ddelnano @cosmic-copybara
Upgrade rules_go to v0.47.1 for go 1.22 support (pixie-io#2113)
01f6745
Summary: Upgrade rules_go to v0.47.1 for go 1.22 support

The work to remove our dependence on go 1.16 will be complete soon (once
pixie-io#2108 is merged). With that done, we can upgrade our go dependencies and
go version. This rules_go change is needed to support go 1.22 as there
was an assembler fix in
[v0.46.0](https://github.com/bazel-contrib/rules_go/releases/tag/v0.46.0)
(bazel-contrib/rules_go#3756 specifically).

This was the most recent rules_go version I could upgrade to without
dealing with breaking changes. I'll revisit upgrading this to a newer
version soon, but my primary goal was to be able to upgrade go and our
go deps.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Existing tests and verified my branch to add go 1.22 as a
supported version builds properly

Signed-off-by: Dom Del Nano <[email protected]>
GitOrigin-RevId: b122242
ddelnano added a commit to ddelnano/pixie that referenced this pull request Aug 6, 2025
@ddelnano @cosmic-copybara
Update dynamic logging to work with Go's 1.17+ calling convention (pi…
ec1fe53
…xie-io#2108)

Summary: Update dynamic logging to work with Go's 1.17+ calling
convention

Despite our earlier messaging that dynamic logging would be deprecated
in pixie-io#2105, I decided that it was easier to handle the new ABI instead of
deprecating the Go parts of the dynamic tracer. My rationale for this is
that the blocker for achieving feature parity for the new Go ABI,
handling `STRUCT_BLOB` variables, is actually a concern for c/c++
tracepoint programs as well. I felt it was important to keep the dynamic
tracer rather than deprecate it entirely.

As mentioned above, this change does not have full feature parity with
the legacy ABI since `STRUCT_BLOB` variables don't work with register
based calling conventions -- these variables copy a blob of memory with
the assumption that a packed struct exists in a contiguous chunk of
memory. However, this isn't unique to Go binaries as c/c++ applications
can pass certain structs via
[registers](https://github.com/pixie-io/pixie/blob/b0001dab6288508295c54f36c81b3ed80c2677e1/src/stirling/obj_tools/testdata/cc/test_exe.cc#L66-L69)
as well.

This change replaces the previous Go `STRUCT_BLOB` tests with C
equivalents that pass the variable on the stack. When a struct variable
will be passed via a register, dynamic logging will now return an error
and suggest to the user to access struct fields individually. This error
and the test cases that assert the error is returned can be reverted to
their original form once pixie-io#2106 is complete.

Relevant Issues: pixie-io#2105

Type of change: /kind cleanup

Test Plan: Existing tests pass and new ones were added where coverage
was needed

Changelog Message: Update Go dynamic logging feature to support Go 1.17+
binaries

---------

Signed-off-by: Dom Del Nano <[email protected]>
GitOrigin-RevId: 8232eee
ddelnano added a commit to ddelnano/pixie that referenced this pull request Aug 6, 2025
@ddelnano @cosmic-copybara
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions (p…
52454be
…ixie-io#2116)

Summary: Add go 1.22 and 1.23 to socket tracer tests. Bump minor go
versions

This PR adds Go 1.22 and 1.23 to the socket tracer test suite in
anticipation of removing Go 1.16 and 1.17 from our repo once pixie-io#2108 is
merged. The plan is to follow this up with a change that removes Go 1.16
and 1.17 in addition to upgrading a portion of our Go dependencies. The
bulk of our dependencies still support Go 1.18, so this will allow us to
upgrade to the latest versions.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Test suite passes

---------

Signed-off-by: Dom Del Nano <[email protected]>
GitOrigin-RevId: 09ade3b
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Upgrade rules_go to v0.47.1 for go 1.22 support (pixie-io#2113)
b8b0790
Summary: Upgrade rules_go to v0.47.1 for go 1.22 support

The work to remove our dependence on go 1.16 will be complete soon (once
pixie-io#2108 is merged). With that done, we can upgrade our go dependencies and
go version. This rules_go change is needed to support go 1.22 as there
was an assembler fix in
[v0.46.0](https://github.com/bazel-contrib/rules_go/releases/tag/v0.46.0)
(bazel-contrib/rules_go#3756 specifically).

This was the most recent rules_go version I could upgrade to without
dealing with breaking changes. I'll revisit upgrading this to a newer
version soon, but my primary goal was to be able to upgrade go and our
go deps.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Existing tests and verified my branch to add go 1.22 as a
supported version builds properly

Signed-off-by: Dom Del Nano <[email protected]>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Update dynamic logging to work with Go's 1.17+ calling convention (pi…
fb7d063
…xie-io#2108)

Summary: Update dynamic logging to work with Go's 1.17+ calling
convention

Despite our earlier messaging that dynamic logging would be deprecated
in pixie-io#2105, I decided that it was easier to handle the new ABI instead of
deprecating the Go parts of the dynamic tracer. My rationale for this is
that the blocker for achieving feature parity for the new Go ABI,
handling `STRUCT_BLOB` variables, is actually a concern for c/c++
tracepoint programs as well. I felt it was important to keep the dynamic
tracer rather than deprecate it entirely.

As mentioned above, this change does not have full feature parity with
the legacy ABI since `STRUCT_BLOB` variables don't work with register
based calling conventions -- these variables copy a blob of memory with
the assumption that a packed struct exists in a contiguous chunk of
memory. However, this isn't unique to Go binaries as c/c++ applications
can pass certain structs via
[registers](https://github.com/pixie-io/pixie/blob/b0001dab6288508295c54f36c81b3ed80c2677e1/src/stirling/obj_tools/testdata/cc/test_exe.cc#L66-L69)
as well.

This change replaces the previous Go `STRUCT_BLOB` tests with C
equivalents that pass the variable on the stack. When a struct variable
will be passed via a register, dynamic logging will now return an error
and suggest to the user to access struct fields individually. This error
and the test cases that assert the error is returned can be reverted to
their original form once pixie-io#2106 is complete.

Relevant Issues: pixie-io#2105

Type of change: /kind cleanup

Test Plan: Existing tests pass and new ones were added where coverage
was needed

Changelog Message: Update Go dynamic logging feature to support Go 1.17+
binaries

---------

Signed-off-by: Dom Del Nano <[email protected]>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions (p…
9f85941
…ixie-io#2116)

Summary: Add go 1.22 and 1.23 to socket tracer tests. Bump minor go
versions

This PR adds Go 1.22 and 1.23 to the socket tracer test suite in
anticipation of removing Go 1.16 and 1.17 from our repo once pixie-io#2108 is
merged. The plan is to follow this up with a change that removes Go 1.16
and 1.17 in addition to upgrading a portion of our Go dependencies. The
bulk of our dependencies still support Go 1.18, so this will allow us to
upgrade to the latest versions.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Test suite passes

---------

Signed-off-by: Dom Del Nano <[email protected]>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Upgrade rules_go to v0.47.1 for go 1.22 support (pixie-io#2113)
122890f
Summary: Upgrade rules_go to v0.47.1 for go 1.22 support

The work to remove our dependence on go 1.16 will be complete soon (once
pixie-io#2108 is merged). With that done, we can upgrade our go dependencies and
go version. This rules_go change is needed to support go 1.22 as there
was an assembler fix in
[v0.46.0](https://github.com/bazel-contrib/rules_go/releases/tag/v0.46.0)
(bazel-contrib/rules_go#3756 specifically).

This was the most recent rules_go version I could upgrade to without
dealing with breaking changes. I'll revisit upgrading this to a newer
version soon, but my primary goal was to be able to upgrade go and our
go deps.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Existing tests and verified my branch to add go 1.22 as a
supported version builds properly

Signed-off-by: Dom Del Nano <[email protected]>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Update dynamic logging to work with Go's 1.17+ calling convention (pi…
e88dd4d
…xie-io#2108)

Summary: Update dynamic logging to work with Go's 1.17+ calling
convention

Despite our earlier messaging that dynamic logging would be deprecated
in pixie-io#2105, I decided that it was easier to handle the new ABI instead of
deprecating the Go parts of the dynamic tracer. My rationale for this is
that the blocker for achieving feature parity for the new Go ABI,
handling `STRUCT_BLOB` variables, is actually a concern for c/c++
tracepoint programs as well. I felt it was important to keep the dynamic
tracer rather than deprecate it entirely.

As mentioned above, this change does not have full feature parity with
the legacy ABI since `STRUCT_BLOB` variables don't work with register
based calling conventions -- these variables copy a blob of memory with
the assumption that a packed struct exists in a contiguous chunk of
memory. However, this isn't unique to Go binaries as c/c++ applications
can pass certain structs via
[registers](https://github.com/pixie-io/pixie/blob/b0001dab6288508295c54f36c81b3ed80c2677e1/src/stirling/obj_tools/testdata/cc/test_exe.cc#L66-L69)
as well.

This change replaces the previous Go `STRUCT_BLOB` tests with C
equivalents that pass the variable on the stack. When a struct variable
will be passed via a register, dynamic logging will now return an error
and suggest to the user to access struct fields individually. This error
and the test cases that assert the error is returned can be reverted to
their original form once pixie-io#2106 is complete.

Relevant Issues: pixie-io#2105

Type of change: /kind cleanup

Test Plan: Existing tests pass and new ones were added where coverage
was needed

Changelog Message: Update Go dynamic logging feature to support Go 1.17+
binaries

---------

Signed-off-by: Dom Del Nano <[email protected]>
ddelnano added a commit to k8sstormcenter/pixie that referenced this pull request Feb 25, 2026
@ddelnano
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions (p…
b4fbcd7
…ixie-io#2116)

Summary: Add go 1.22 and 1.23 to socket tracer tests. Bump minor go
versions

This PR adds Go 1.22 and 1.23 to the socket tracer test suite in
anticipation of removing Go 1.16 and 1.17 from our repo once pixie-io#2108 is
merged. The plan is to follow this up with a change that removes Go 1.16
and 1.17 in addition to upgrading a portion of our Go dependencies. The
bulk of our dependencies still support Go 1.18, so this will allow us to
upgrade to the latest versions.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Test suite passes

---------

Signed-off-by: Dom Del Nano <[email protected]>
entlein pushed a commit to k8sstormcenter/pixie that referenced this pull request Jun 2, 2026
@ddelnano
Upgrade rules_go to v0.47.1 for go 1.22 support (pixie-io#2113)
ceaaf3a
Summary: Upgrade rules_go to v0.47.1 for go 1.22 support

The work to remove our dependence on go 1.16 will be complete soon (once
pixie-io#2108 is merged). With that done, we can upgrade our go dependencies and
go version. This rules_go change is needed to support go 1.22 as there
was an assembler fix in
[v0.46.0](https://github.com/bazel-contrib/rules_go/releases/tag/v0.46.0)
(bazel-contrib/rules_go#3756 specifically).

This was the most recent rules_go version I could upgrade to without
dealing with breaking changes. I'll revisit upgrading this to a newer
version soon, but my primary goal was to be able to upgrade go and our
go deps.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Existing tests and verified my branch to add go 1.22 as a
supported version builds properly

Signed-off-by: Dom Del Nano <[email protected]>
entlein pushed a commit to k8sstormcenter/pixie that referenced this pull request Jun 2, 2026
@ddelnano
Update dynamic logging to work with Go's 1.17+ calling convention (pi…
f5ca95c
…xie-io#2108)

Summary: Update dynamic logging to work with Go's 1.17+ calling
convention

Despite our earlier messaging that dynamic logging would be deprecated
in pixie-io#2105, I decided that it was easier to handle the new ABI instead of
deprecating the Go parts of the dynamic tracer. My rationale for this is
that the blocker for achieving feature parity for the new Go ABI,
handling `STRUCT_BLOB` variables, is actually a concern for c/c++
tracepoint programs as well. I felt it was important to keep the dynamic
tracer rather than deprecate it entirely.

As mentioned above, this change does not have full feature parity with
the legacy ABI since `STRUCT_BLOB` variables don't work with register
based calling conventions -- these variables copy a blob of memory with
the assumption that a packed struct exists in a contiguous chunk of
memory. However, this isn't unique to Go binaries as c/c++ applications
can pass certain structs via
[registers](https://github.com/pixie-io/pixie/blob/bf0ee6c316eb72f94b5e4ec0fc44a25187d93d88/src/stirling/obj_tools/testdata/cc/test_exe.cc#L66-L69)
as well.

This change replaces the previous Go `STRUCT_BLOB` tests with C
equivalents that pass the variable on the stack. When a struct variable
will be passed via a register, dynamic logging will now return an error
and suggest to the user to access struct fields individually. This error
and the test cases that assert the error is returned can be reverted to
their original form once pixie-io#2106 is complete.

Relevant Issues: pixie-io#2105

Type of change: /kind cleanup

Test Plan: Existing tests pass and new ones were added where coverage
was needed

Changelog Message: Update Go dynamic logging feature to support Go 1.17+
binaries

---------

Signed-off-by: Dom Del Nano <[email protected]>
entlein pushed a commit to k8sstormcenter/pixie that referenced this pull request Jun 2, 2026
@ddelnano
Add go 1.22 and 1.23 to socket tracer tests. Bump minor go versions (p…
1410b5b
…ixie-io#2116)

Summary: Add go 1.22 and 1.23 to socket tracer tests. Bump minor go
versions

This PR adds Go 1.22 and 1.23 to the socket tracer test suite in
anticipation of removing Go 1.16 and 1.17 from our repo once pixie-io#2108 is
merged. The plan is to follow this up with a change that removes Go 1.16
and 1.17 in addition to upgrading a portion of our Go dependencies. The
bulk of our dependencies still support Go 1.18, so this will allow us to
upgrade to the latest versions.

Relevant Issues: N/A

Type of change: /kind cleanup

Test Plan: Test suite passes

---------

Signed-off-by: Dom Del Nano <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@oazizi000 oazizi000 oazizi000 approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@ddelnano @oazizi000
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.