Não. Você provavelmente vai acertar exatamente o mesmo problema com qualquer alternativa que você está recebendo aqui.
Sem entrar em muitos detalhes do que é óbvio no rastreamento de pilha, que é o território do StackOverflow:
O problema é quase certamente o estado diferente do processo que um daemon possui, comparado a um programa que você executa a partir de um desktop ou shell. Variáveis de ambiente, o diretório atual, limites de recursos, identificadores de arquivos abertos, terminais de controle, diretório raiz e até mesmo grupos suplementares podem ser - e, na maioria deles - diferentes em um processo do daemon executado a partir de um supervisor de daemon de um processo invocado em um sessão de login.
Seu problema pode estar abaixo de qualquer diferença entre os dois. (Minha estimativa é de variáveis de ambiente, por causa do que está no rastreamento de pilha.) Mas essas diferenças são inerentes aos supervisores do daemon. A execução de daemons com estados de processo fixos e determináveis é parte de seu design. Se você substituir outro supervisor do daemon, ainda obterá um estado de processo controlado que não corresponde ao dos processos executados em sua sessão de login.
Você não deveria considerar alternativas para launchd
. Você deve estar olhando para o seu plist e ajustando-o para configurar o material correto (provavelmente variáveis de ambiente, como eu disse) que seu driver ODBC espera ter disponível para ele. E você deveria estar lendo o 4D doco que existe. ☺