when you do a launchctl list
from the terminal, you'll notice - in the second column... there is a list of mostly 0's and -'s... if your program exited incorrectly, it will show the exit code in that second column.... usually a -1 or sometimes a -251, or whatever the case may be... and remember... just cause your launchd item might have crashed... launchctl may still feverishly be trying to "make it work" - every 10 seconds..... so don't let a borked launchd process linger forever, as it definitely impacts performance..
unload it with a -w.... and the full path to the plist, or at least stop (and optionally remove it) with the bundle identifier. -w will make a clandestine entry in a plist in your /var/db/launchd folder, telling the kernel not to load it next time the machine boots.. irrespective of what the "enabled" XML entry may say in the Plist.... so beware that there is more than just that flag at play as to whether the item is resurrected the next time you startup...
if you want you can back up that overrides.plist file deep in tat var folder and start over if it has gotten too convoluted with loads and unloads over time... there's other ways to do it, but i'm going to shut up now.. before I incidentally instruct you how to completely hose your computer...