Crashing when updating two bone ik target positions

Hi all, not sure if there's already an answer to this issue but I've been searching for a few hours and can't find anything.

I have a third-person player character, and both arms have the two-bone IK constraint on them. I have their target transform constantly following game objects that are attached to the weapon. However, Unity seems to crash when I play test. It seems to only be when the player is aiming in or out so I've assumed it's something to do with updating the positions of the targets as I know they use jobs behind the scenes.

I've added my code below that is responsible for the aiming in and out. As you can see, I tried fixing it by adding an aim timer but it was no use.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using StarterAssets;

public class ThirdPersonShooterController : MonoBehaviour
{
    [SerializeField]CinemachineVirtualCamera aimVirtualCamera;
    [SerializeField]float normalSensitivity;
    [SerializeField]float aimSensitivity;
    [SerializeField]GameObject crosshair;
    [SerializeField]LayerMask aimColliderLayerMask;
    [SerializeField]Transform debugTransform;
    [SerializeField]GameObject projectile;
    [SerializeField]Weapon currentWeapon;
    [SerializeField]Transform weaponHolsteredPosition;
    [SerializeField]Transform weaponDrawnPosition;
    [SerializeField]IK_Target iK_Targets;
    [SerializeField]Transform leftHandIK_Hint;
    [SerializeField]Transform rightHandIK_Hint;

    StarterAssetsInputs starterAssetsInputs;
    ThirdPersonController thirdPersonController;
    bool lastAimState = false;
    float aimTimer;
    float minAimTime = 0.1f;

    public void SetCurrentWeapon(Weapon _weapon)
    {
        currentWeapon.transform.parent = null;
        currentWeapon = _weapon;
    }

    void Awake()
    {
        thirdPersonController = GetComponent<ThirdPersonController>();
        starterAssetsInputs = GetComponent<StarterAssetsInputs>();  
    }

    void Start()
    {
        SetHolsterPositions();  
    }

    void Update()
    {
        aimTimer += Time.deltaTime;
        Debug.Log(aimTimer);

        Vector3 mouseWorldPosition = Vector3.zero;

        Vector2 screenCenterPoint = new Vector2(Screen.width / 2f, Screen.height / 2f);
        Ray ray = Camera.main.ScreenPointToRay(screenCenterPoint);
        Transform hitTransform = null;
        if(Physics.Raycast(ray, out RaycastHit raycastHit, 999f, aimColliderLayerMask))
        {
            debugTransform.position = raycastHit.point;
            mouseWorldPosition = raycastHit.point;
            hitTransform = raycastHit.transform;
        }

        SetIK_Values();

        if(starterAssetsInputs.aim)
        {
            Vector3 worldAimTarget = mouseWorldPosition;
            worldAimTarget.y = transform.position.y;
            Vector3 aimDirection = (worldAimTarget - transform.position).normalized;

            transform.forward = Vector3.Lerp(transform.forward, aimDirection, Time.deltaTime * 20f);

            if(starterAssetsInputs.aim != lastAimState)
            {
                if(aimTimer > minAimTime)
                {
                    aimVirtualCamera.gameObject.SetActive(true);
                    thirdPersonController.SetSensitivity(aimSensitivity);
                    thirdPersonController.SetRotateOnMove(false);
                    thirdPersonController.SetCanSprint(false);
                    crosshair.SetActive(true);

                    SetAimPositions();

                    aimTimer = 0f;
                }
            }
        }
        else
        {

            if(starterAssetsInputs.aim != lastAimState)
            {
                if(aimTimer > minAimTime)
                {
                    aimVirtualCamera.gameObject.SetActive(false);
                    thirdPersonController.SetSensitivity(normalSensitivity);
                    thirdPersonController.SetRotateOnMove(true);
                    thirdPersonController.SetCanSprint(true);
                    crosshair.SetActive(false);

                    SetHolsterPositions();

                    aimTimer = 0f;
                }
            }
        }

        if(starterAssetsInputs.shoot)
        {
            if(hitTransform != null)
            {
                if(hitTransform.GetComponent<BulletTarget>() != null)
                {
                    Debug.Log("Hit!");
                }
                else
                {
                    Debug.Log("Miss!");
                }
            }

            Vector3 aimDir = (mouseWorldPosition - currentWeapon.GetBulletSpawnPosition().position).normalized;
            GameObject newProjectile = Instantiate(projectile, currentWeapon.GetBulletSpawnPosition().position, Quaternion.LookRotation(aimDir, Vector3.up));
            newProjectile.GetComponent<BulletRaycastProjectile>().Setup(raycastHit.point);

            starterAssetsInputs.shoot = false;
        }
    }

    void SetIK_Values()
    {
        iK_Targets.GetLeftHandIK_Target().position = currentWeapon.GetIK_Targets().GetLeftHandIK_Target().position;
        iK_Targets.GetLeftHandIK_Target().rotation = currentWeapon.GetIK_Targets().GetLeftHandIK_Target().rotation;

        iK_Targets.GetRightHandIK_Target().position = currentWeapon.GetIK_Targets().GetRightHandIK_Target().position;
        iK_Targets.GetRightHandIK_Target().rotation = currentWeapon.GetIK_Targets().GetRightHandIK_Target().rotation;
    }

    void SetAimPositions()
    {
        while(currentWeapon.transform.position != weaponDrawnPosition.position && currentWeapon.transform.forward != weaponDrawnPosition.forward)
        {
            currentWeapon.transform.position = Vector3.Lerp(currentWeapon.transform.position, weaponDrawnPosition.position, Time.deltaTime * 20f);
            currentWeapon.transform.forward = Vector3.Lerp(currentWeapon.transform.forward, weaponDrawnPosition.forward, Time.deltaTime * 20f);
        }
        lastAimState = starterAssetsInputs.aim;

        currentWeapon.transform.parent = weaponDrawnPosition;

        leftHandIK_Hint.position = currentWeapon.GetIK_Hints().GetLeftHandIK_AimHint().position;
        leftHandIK_Hint.localRotation = currentWeapon.GetIK_Hints().GetLeftHandIK_AimHint().localRotation;

        rightHandIK_Hint.position = currentWeapon.GetIK_Hints().GetRightHandIK_AimHint().position;
        rightHandIK_Hint.localRotation = currentWeapon.GetIK_Hints().GetRightHandIK_AimHint().localRotation;
    }

    void SetHolsterPositions()
    {
        while(currentWeapon.transform.position != weaponHolsteredPosition.position + currentWeapon.GetHolsterPositionOffset() &&
        currentWeapon.transform.forward != weaponHolsteredPosition.forward + currentWeapon.GetHolsterRotationOffset())
        {
            currentWeapon.transform.position = Vector3.Lerp(currentWeapon.transform.position, weaponHolsteredPosition.position + currentWeapon.GetHolsterPositionOffset(), Time.deltaTime * 20f);
            currentWeapon.transform.forward = Vector3.Lerp(currentWeapon.transform.forward, weaponHolsteredPosition.forward + currentWeapon.GetHolsterRotationOffset(), Time.deltaTime * 20f);
        }

        lastAimState = starterAssetsInputs.aim;

        currentWeapon.transform.parent = weaponHolsteredPosition;
        currentWeapon.transform.localPosition += currentWeapon.GetHolsterPositionOffset();
        currentWeapon.transform.forward += currentWeapon.GetHolsterRotationOffset();

        leftHandIK_Hint.position = currentWeapon.GetIK_Hints().GetLeftHandIK_HolsterHint().position;
        leftHandIK_Hint.localRotation = currentWeapon.GetIK_Hints().GetLeftHandIK_HolsterHint().localRotation;

        rightHandIK_Hint.position = currentWeapon.GetIK_Hints().GetRightHandIK_HolsterHint().position;
        rightHandIK_Hint.localRotation = currentWeapon.GetIK_Hints().GetRightHandIK_HolsterHint().localRotation;
    }
}

Hey, I'm currently encountering the same issue, have you found any fixes / workarounds?