¿Por qué git freeze en git-cnetworkingential-osxkeychain a veces?

Cuando lo hago cd some-repo; git push origin master cd some-repo; git push origin master en mi terminal de bash, no me pide nombre de usuario / contraseña porque creo que git ya ha guardado eso (hace tanto time que no recuerdo los detalles de cómo se cayó). Estoy presionando a un repository de GitHub como el origen remoto.

Así que tengo un progtwig en C ++ que hace un tenedor y

 execl("/bin/bash", "/bin/bash", "-c", "cd some-repo; git push origin master", (char *)0); 

A continuación, espera a que finalice el process de bash del niño.

A veces funciona bien, pero otras veces (aparentemente random) se congelará. Mirando la jerarquía del process en ejecución, veo:

 MyProgram git git-remote-http git git-cnetworkingential-osxkeychain 

Si elimino el process child-most git-cnetworkingential-osx, mi progtwig se reanuda (porque el command parent-most git termina), sin resultados sorprendentes, como:

 error: git-cnetworkingential-osxkeychain died of signal 15 error: RPC failed; result=7, HTTP code = 0 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly 

Mi pregunta: ¿por qué git push origin master siempre parece funcionar (sin pedirme ninguna contraseña de usuario u otro stdin) en un terminal de bash, sino que cuelga (probablemente pide algo en stdin) en git-cnetworkingential-osxkeychain a veces pero no en otro veces cuando lo ejecuto desde mi progtwig C ++?

Intenté search la página de manual en git-cnetworkingential-osxkeychain y no pude encontrar nada. Al ejecutarlo solo se imprime Usage: git cnetworkingential-osxkeychain <get|store|erase> que no se explica por sí solo. ¡Gracias!

Estoy ejecutando OS X 10.8.3; git versión 1.7.12.4 (Apple Git-37); GNU bash, versión 3.2.48 (1) – liberación (x86_64-apple-darwin12).

Sin mucha información, supongo que el ahorcamiento depende de si su llavero de inicio de session está bloqueado o no en ese momento. En la Mac, si el llavero de inicio de session está desbloqueado, la consulta para get su nombre de usuario y contraseña puede continuar sin obstáculos. Pero si el llavero está bloqueado, entonces Mac OS X quiere pedirle su contraseña de inicio de session para desbloquear el llavero. Sospecho que el cuadro de dialog está ahí, simplemente escondido detrás de algo, por lo que puede haberlo perdido. Esperará a que ingrese su contraseña, colgando el process de manera efectiva.

Aquí hay más información sobre la infraestructura de Gitcnetworkingential y más sobre la API (incluida la línea de command para un ayudante).