# instantiate_cpp_exprgrammar.o killed (sol: MAKEOPTS=-j1)

## samplemix

Intento instalar kde-meta:4.3

y cuando llega a gcc.compile.c++ bin.v2/libs/wave/build/gcc-4.3/gentoorelease/link-static/instantiate_cpp_exprgrammar.o aborta y se termina la sesión solo y aparece el login  :Surprised: 

http://img13.imageshack.us/img13/9632/gentooz.png

ya me ha pasado 2 veces  :Crying or Very sad: 

¿Alguien sabe porque pasa esto?

EDIT: https://bugs.gentoo.org/show_bug.cgi?id=217577

acá indican -j1, eso voy a intentar.

----------

## i92guboj

El problema lo conocía, aunque es bastante raro que la compilación también acabe matando al shell padre. 

Se que es una pregunta simplona, pero por si acaso ¿no habrás lanzado emerge con exec? Ejemplo:

```
exec emerge foo
```

En este caso sería totalmente normal.

----------

## samplemix

 *i92guboj wrote:*   

> El problema lo conocía, aunque es bastante raro que la compilación también acabe matando al shell padre. 
> 
> Se que es una pregunta simplona, pero por si acaso ¿no habrás lanzado emerge con exec? Ejemplo:
> 
> ```
> ...

 

No, solo escribí emerge -avt kde-meta:4.3 

Y lo solucione con MAKEOPTS=-j1.

E instale kde4 sin un solo failed  :Smile: 

Saludos  :Twisted Evil: 

----------

## natxoblogg

¿La opción "-j1" no indica al compilador gcc el numero de procesadores que posee nuestra máquina?

Pregunta:

¿Quiere decir esto que al instalar el kde, se entra en sección crítica?, es decir que ¿si poseemos varios nucleos, el programa en un punto de su ejecución no puede ser compartido por varios procesadores o hilos?.

Es una pregunta informativa totalmete, pero si es así, ¿no seria una pequeña cagada de los desarrolladores de kde, el no tener en cuenta regiones críticas a la hora de la instalación?.

----------

## natxoblogg

Y otra cosa que se me acaba de ocurrir dándole vueltas a mi cabeza, en el caso de que la compilación matara la shell...

¿no quedaría la compilación como un proceso huérfano y el proceso init debería apadrinarlo y permitir que este concluyese si no ha dado ningún error realmente jodido que pueda arruinar nuestro sistema?

----------

## i92guboj

 *natxoblogg wrote:*   

> ¿La opción "-j1" no indica al compilador gcc el numero de procesadores que posee nuestra máquina?

 

No. -j indica el número máximo de hilos en los que make se desdoblará. Es perfectamente posible usar 16 hilos en una máquina con un solo procesador, aunque por lo general no es muy buena idea porque el uso de ram aumenta con cada hilo, y el cambio de contexto de un hilo a otro consumirá una parte muy importante del tiempo de computación disponible.

 *Quote:*   

> 
> 
> Pregunta:
> 
> ¿Quiere decir esto que al instalar el kde, se entra en sección crítica?, es decir que ¿si poseemos varios nucleos, el programa en un punto de su ejecución no puede ser compartido por varios procesadores o hilos?.
> ...

 

No entiendo la pregunta. En primer lugar, procesadores e hilos son dos cosas totalmente distintas. En segundo lugar, el uso de -j no afecta al resultado final de la compilación (el fichero o ficheros objeto). Los binarios obtenidos con -j1 deben ser iguales 1:1 a los obtenidos con -j16.

----------

## natxoblogg

Ok grácias i92guboj, tenia mis dudas, si "-j" indica el numero de hilos ya está todo claro.

Con respecto a la segunda pregunta, ¿por qué el kde se tiene que compilar con un solo hilo?, (el problema que cometaba samplemix)

----------

## i92guboj

 *natxoblogg wrote:*   

> Ok grácias i92guboj, tenia mis dudas, si "-j" indica el numero de hilos ya está todo claro.
> 
> Con respecto a la segunda pregunta, ¿por qué el kde se tiene que compilar con un solo hilo?, (el problema que cometaba samplemix)

 

Algunos paquetes son bastante delicados en ese sentido, el problema está en los scripts de compilado normalmente (los makefiles o similares), y por normal general siempre se debe a algún tipo de condición que hace que un objeto A necesario para compilar otro objeto B no esté preparado en el momento en que se necesita, con un solo hilo el problema desaparece porque todas las operaciones son lineales, con varios hilos puede haber problemas de concurrencia.

No se si es el mismo caso, no lo he visto a fondo, pero es el más típico.

----------

## natxoblogg

Gracias, ya me queda más claro.

----------

