You are doing wrong on this part
the_post_thumbnail($page->ID, "my-non-working-size");
For the_post_thumbnail()
you don’t need to pass post ID, you just have to pass size and attr. More Info – the_post_thumbnail()
So try like this the_post_thumbnail("my-non-working-size");
without passing post ID.
Your markup messed up so I’m not sure your actual markup structure. Here is working example and It tested.
<?php
$args = array(
'post_type' => 'homeslide'
);
$mypages = get_posts( $args );
?>
<div class="your-class container">
<?php
foreach ( $mypages as $post ) : setup_postdata( $post ); ?>
<div>
<h2><a href="https://wordpress.stackexchange.com/questions/240606/<?php echo get_the_permalink(); ?>"><?php the_title(); ?></a></h2>
<div class="entry">
<?php if ( has_post_thumbnail() ) { ?>
<div class="col-left">
<?php the_post_thumbnail( 'my-non-working-size' ); ?>
</div>
<div class="col-right">
<?php // ?>
</div>
<?php
} // end if has_post_thumbnail();
the_content(); ?>
</div>
</div>
<?php endforeach;
wp_reset_postdata();?>
</div>
And please read this one if you want to need more about get_posts