Skip to content
This repository has been archived by the owner on Jan 10, 2025. It is now read-only.

stake-pool: Align types to 1 for safe pointer cast #5179

Merged
merged 2 commits into from
Aug 31, 2023

Conversation

joncinque
Copy link
Contributor

@joncinque joncinque commented Aug 31, 2023

Problem

Under Rust 1.72, the cast done by the stake pool program from raw bytes into a ValidatorStakeInfo panics because the underlying pointer might not be aligned to an address with a multiple of 8. See the offending line: https://github.com/solana-labs/solana-program-library/blob/c79c727f88710e565cd47bde0049f1b449aef0eb/stake-pool/program/src/big_vec.rs#L163C1-L163C80

And see https://github.com/solana-labs/solana/actions/runs/6029425589/job/16358927677?pr=32961 for a failing run.

Solution

It causes loads of churn, but do the right thing: use the alignment-safe PodU64 and PodU32 instead of u64 and u32, respectively.

Note: this is blocking the upgrade of the monorepo to 1.72 because of downstream build errors

@joncinque joncinque requested a review from 2501babe August 31, 2023 00:17
@joncinque
Copy link
Contributor Author

Merging to unblock the monorepo

@joncinque joncinque merged commit 517be45 into solana-labs:master Aug 31, 2023
@joncinque joncinque deleted the spalign branch August 31, 2023 07:53
@joncinque joncinque changed the title stake-pool: Use unaligned types for safe pointer cast stake-pool: Align types to 1 for safe pointer cast Aug 31, 2023
thlorenz added a commit to ironforge-cloud/solana-program-library that referenced this pull request Sep 4, 2023
* master: (719 commits)
  release: Bump token-2022 and all dependencies (solana-labs#5189)
  SPL errors from hashes (solana-labs#5169)
  stake-pool: Add comments about unnecessary ownership checks (HAL-01) (solana-labs#5084)
  stake-pool: Enforce that pool mint uses 9 decimal places (HAL-03) (solana-labs#5085)
  build(deps-dev): bump tsx from 3.12.7 to 3.12.8 in /single-pool/js (solana-labs#5188)
  account-compression: Fixup sdk doc deployment (solana-labs#5187)
  token-js: renamed `getExtraAccountMetaAccount` to `getExtraAccountMetaAddress` (solana-labs#5186)
  token-js: added an e2e test for transferring using a mint with a transfer hook extension (solana-labs#5138)
  Serde optional dependencies clean-up (solana-labs#5181)
  build(deps): bump chrono from 0.4.27 to 0.4.28 (solana-labs#5180)
  stake-pool: Use unaligned types for safe pointer cast (solana-labs#5179)
  spl-pod: make code docs more explicit (solana-labs#5178)
  token-js: added extra account resolution for transfer hook extension (solana-labs#5112)
  Fix incorrect code doc (solana-labs#5177)
  Move Pod types to separate library (solana-labs#5119)
  build(deps-dev): bump @typescript-eslint/eslint-plugin from 6.4.1 to 6.5.0 in /memo/js (solana-labs#5176)
  build(deps): bump chrono from 0.4.26 to 0.4.27 (solana-labs#5171)
  build(deps-dev): bump prettier from 3.0.2 to 3.0.3 in /token-swap/js (solana-labs#5174)
  build(deps-dev): bump prettier from 3.0.2 to 3.0.3 in /token/js (solana-labs#5172)
  build(deps-dev): bump prettier from 3.0.2 to 3.0.3 in /token-lending/js (solana-labs#5173)
  ...
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant