It runs at *:30 in every hour because that's what you've set. If you want it to run every half-hour, which is what I guess you might mean you have to set that first entry to 0,30 which will then run on the hour and the half hour. The minutes column is the minutes past the hour, not an interval.
As to why it stops after a period of time, there could be several causes. Maybe the cron daemon crashes (unlikely) or is killed by some other process. Maybe the function cannot be completed for some reason. Maybe msec removes your permission to run crontabs from cron.allow. You would need to investigate further.