Estoy trabajando en una aplicación de iPhone que implica cargar fotos completas desde la cámara (generalmente entre 1.5 a 2.0 MB cada una) y sus miniaturas (mucho más pequeño) a Amazon S3.POSIX error 12 ("No se puede asignar memoria") al cargar archivos desde un iPhone
Las miniaturas siempre cargar con éxito, pero a veces las imágenes completas no, y cuando fallan, fallan con código de error POSIX 12, también conocido como ENOMEM. Sin embargo, agregué código de depuración para imprimir la cantidad de memoria libre cuando ocurre el error, y siempre hay bastante libre, generalmente más de 100 MB.
Además, el error aparece con mayor frecuencia cuando la carga ocurre a través de 3G y menos cuando está a través de wifi, lo que parece extraño, ya que la solicitud no está descargando mucho y el archivo cargado ya está en la memoria (I también he intentado transmitirlo desde el disco sin ninguna mejora).
He intentado cargar el archivo usando NSURLConnection, las funciones Foundation CFHTTP * y la biblioteca ASIHTTPRequest, pero independientemente, el error ocurre con la misma frecuencia. Aún más extraño, todo lo que Google ha revelado es que los usuarios finales a veces obtienen el código de error 12 de Safari; no he visto a ningún desarrollador de iOS mencionarlo. Estoy trabajando con una base de código heredada, por lo que es posible que haya algún problema con ella, pero ni siquiera estoy seguro de qué buscar. ¡Cualquier idea sería muy apreciada!
¿cómo está volviendo ENOMEM la llamada? –
Cuando estaba usando NSURLConnection, obtenía el error como parte del método de delegado didFailWithError - un NSError con el dominio de error POSIX, código de error 12 y la descripción localizada "No se puede asignar memoria". Cuando utilicé CFHTTPMessageRef, fallaba cuando llamaba a CFReadStreamRead() (función devuelta -1), y luego errno era igual a 12. –
Veo el mismo problema al intentar cargar archivos con Google Docs API en 3G. Una publicación en la API de Dropbox menciona un problema similar: http://forums.dropbox.com/topic.php?id=25351. Parece suceder en conexiones lentas (3G) con archivos grandes. – Kamchatka