So this is called in a pre_get_posts filter? If it is then this could be the cause of the infinite loop unless you are making sure that your pre_get_posts filter is not running when ACF is doing a query to get the field.
If this is the case
1) WP does hook pre_get_posts
2) Your filter runs and calls get_field()
3) ACF does a query to get the field – Loopback to 1