Pantallazo azul PAGE_FAULT_IN_NONPAGED_AREA

Bienvenidos al mundo de la desesperación de los pantallazos azules. He conseguido solucionarlos por completo esta problemática sin tener que cambiar nada de hardware, sin resetear y sin rezar 20 salves maría. ¿Cómo? En este post se muestra una solución. Esperemos que se ajuste a tu problema ya que cada ordenador es un mundo.

pantalla-azul-windows

Pantallazo azul PAGE_FAUL_IN_NONPAGED_AREA

 

¿Qué información da Microsoft al respecto? Aquí puedes acceder.

Extraído de la página

Cause
Bug check 0x50 usually occurs after the installation of faulty hardware or in the event of failure of installed hardware (usually related to defective RAM, be it main memory, L2 RAM cache, or video RAM).
Another common cause is the installation of a faulty system service.
Antivirus software can also trigger this error, as can a corrupted NTFS volume.

-“Ajá tengo un problema hardware”…
– ¿Seguro…? ¿…?

Los amigos de Microsoft en el mismo enlace proponen algunos motivos que pueden ocasionar el pantallazo en cuestión.

– Suerte maja.

Empecemos por el principio tenía este problema cuando ejecutaba vídeos, cuando ejecutaba spotify, etc. Pero ¿antes? Antes no pasaba.

– ¿Será un virus?

-Sí Laura, has bajado mucha mierda por Internet.

Pero no era un virus.

– ¿Entonces? ¿Lupus?

doctorhousedontknow

Ante tal situación desesperante y utilizando un poco la intuición tiré de la manta por si el error podía ser por el uso de memoria virtual de Chrome. Y sí, solucioné el error de Chrome y así lo documenté en este post.

Pero claro, los pantallazos azules seguían con Internet Explorer, Spotify, etc etc.

Más info de la situación.

Entorno:
Windows 7 Enterprise
Disco duro C: 60,9 GB
Disco duro D: 171 GB
RAM: 16 GB.

Síntomas:

  • Pantallazo azul en numerosas ocasiones y en aumento.
  • Se produce cuando se abre un navegador con mucho contenido o un programa muy pesado.
  • Estás desesperado.

breakingcomputer

Comprueba lo siguiente:

  • ¿Cuanto espacio tienes libre en todos los discos? ¿Está muy lleno?

Si está  al 70% – 80% de la capacidad en al menos alguno de los discos sigue leyendo. 

Ir a Windows -> Propiedades del equipo -> Cambiar configuración.

Cambiar configuracion windows

Ir a opciones avanzadas -> Rendimiento -> Configuración.

propiedades del sistema memoria virtual windows

Ir a Opciones Avanzadas -> Memoria Virtual -> Cambiar

Opciones de rendimiento

¿Tienes marcado «Administrar automáticamente el tamaño del archivo de paginación para todas las unidades»? (Primera casilla)

Administrar automaticamente el tamaño del archivo de paginación para todas las unidades

Entonces puede que tu problema sea el mismo que el mío.

Con esta opción windows “se apaña” con la memoria que tienes sin uso para asignarla al tamaño del archivo de paginación. Problema —> ¿Qué pasa cuando te queda poca memoria?
Cuando abres una aplicación que consume extra de datos peta. Y peta con estilo, con un señor pantallazo en pleno año 2014.

De hecho, lo que da la clave a la solución es observar lo siguiente:Memoria virutal tamaño
El tamaño Recomendado era el doble que el tamaño asignado actualmente (la imagen ya está con la solución). De esta forma actualizo los parámetros con los siguientes parámetros.

 

Configuracion paginacion

La combinación ganadora en mi caso:

C: -> Tamaño inicial 14800MB
C: -> Tamaño máximo 14800MB

D: -> Tamaño inicial 24000MB
D: -> Tamaño máximo 24000MB

Tuve que borrar muchos datos para liberar el suficiente espacio para poder combatir el 100% de los pantallazos. Y puedo asegurar que llevo una semana a toda tralla y sin ningún problema.

Ahora espero que haya sido de utilidad. Feedback, comentarios, quejas, sugerencias, problemas, compartir y vivir are welcome 🙂

Anuncio publicitario

Error pantallazo azul en el navegador Chrome

¿Tu navegador te está vacilando? ¿Ya llevas 5 reinicios seguidos por pantallazo azul? ¿Estás a punto de tirar el ordenador por la ventana?

giphy

Bien! Entonces es posible que tenga la solución a tus problemas.

Ayer sufrí unos 8 reinicios del ordenador. Probé con distintos navegadores e igual. La página que estaba visitando era www.codeschool.com, casualmente cuando reproducía uno de sus vídeos. Es decir: estaba visitando páginas de alto volumen de datos.

Así que probé suerte con aumentar la caché del navegador Chrome. Para ello hay que seguir los siguientes pasos:

  1. Botón derecho Icono Google Chrome en Propiedades
  2. Pestaña «Acceso directo»
  3. En Destino, ponemos el cursor al final de «….\chrome.exe». Añadimos un espacio y la siguiente cadena «–disk-cache-size=104857600»
  4. Guarda y dale caña!

Con esto se acabó mi pesadilla. Puedes añadir un cero más si ves que el problema persiste.

Espero que te funcione 😉

Si no funciona y estás obligado a lidiar con Windows instálate una Ubuntu en una máquina virtual. Si, ahí funciona seguro.

Weblogic em error localhost:7001/em not found

Si te has encontrado <ironia> este precioso y bonito error porque tienes la suerte de trabajar con Oracle Weblogic </ironia> es porque no tienes instalado Enterprice Manager Weblogic de Oracle.

En concreto has intentado acceder a la url http://localhost:7001/em y obtienes error “not foud”.

Error 404–Not Found

¿Y cómo instalarlo? ¡Ajá! Como habrás observado el foro Oracle de este tema tiene menos respuestas que una rueda de prensa sobre la corrupción del PP.

  1. Voy a suponer que sabéis qué es WebLogic y toda la parafernalia de alrededor.

  2. Tenéis instalado WebLogic 10.3.6

  3. Podéis acceder a la consola de weblogic http://localhost:7001/console

En mi caso, estoy intentando hacer un simple e indefenso HelloWorld siguiendo alguno de estos post.

Pero omiten esta parte, la de configurar Web Logic. Bien, también he buscado post sobre weblogic (Información sobre WebLogic).

SOLUCIÓN

“Sí nena, tengo la solución”

  1. Descargar weblogic 10.3.6. El fichero se llama wls1036_generic.jar http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html

  2. Doble click en .jar. Pulsar siguiente.

  1. Selecciona la carpeta correcta donde esté Middleware. Ojo! Yo he elegido donde tengo mi entorno de Eclipse. Siguiente.

  2. Aparece la siguiente ventana para mandarles información. La evitamos quitando la selección del checkbox y pulsando siguiente.

  3. Decimos que SI no queremos información (aquí se han lucido).

  4. Y esperamos (tarda en salir la siguiente ventana). Seleccionamos que “No deseo recibir información” y pulsamos continuar (por qué poner siguiente como todas las veces, si continuar mola más).

  5. Seleccionamos todos los componentes habidos y por haber y pulsamos siguiente.

  6. Siguiente

  7. Se pone a instalar.

  8. Cuando se instala se inicia “WebLogic Platform 10.3.6

  9. Pulsamos sobre Getting started with WebLogic Server

  10. Pulsamos sobre Ampliar dominio

  11. Seleccionamos el dominio de Weblogic. Aparece por defecto. Los dominios los he creado desde Eclipse o JDeveloper. También se pueden crear desde WebLogic. Siguiente.

  12. Ajá!!!!!!! Sorpresa sorpresa. Enterprise Manager no está instalado. Seleccionamos que lo instale.

  13. Le decimos la carpeta donde instalar  EM. Mejor poner la de defecto como sale en la imagen.

  14. Seleccionamos la parte inferior y pulsamos Siguiente.

  15. Pulsamos siguiente (la prueba de conexión va a fallar)

  1. Seleccionamos “Despliegues y servicios” siguiente.

  1. Pulsamos siguiente (por defecto están todas marcadas)

  1. Otra de siguiente

  2. Pulsamos Ampliar

  3. Pulsamos Listo

  4. Cerramos WebLogic. (cerrar el cms de Windows)

  5. Arrancamos WebLogic sobre el fichero startWebLogic.cmd.

  6. Probamos http://localhost:7001/em

Exacto! Después de 25 sencillos pasos has conseguido tener bien configurado WebLogic. El resto seguro que es un mundo de felicidad y sencillez! ¡Hasta la próxima amiwitos!

Notas: Para llegar a la solución se llevaron unas cuantas horas, unos cuantos tacos y unos cuantos mecawens. Por suerte, nadie resultó herido.

Agradecimientos a Alex y Manuel, mis compis de aventura.

SQL Error (1701): Cannot truncate a table referenced in a foreign key constraint

Contexto: Base de datos MySQL InnoDB.

Significado: Error al querer borrar una tabla que existe una foreign key que lo referencia.

Situación: En ocasiones deseamos modificar/eliminar unos registros/tabla y no podemos porque nos dice que existe otro registro que lo enlaza. En palabras más técnicas: SQL Error (1701): Cannot truncate a table referenced in a foreign key constraint

Solución: Eliminamos todos los registros en el orden de las tablas correcto (primero las hojas y por último la raiz) o atajamos desactivando el control de foreign keys.

Aquí muestro la segunda opción.  Pon a 0 (inhabilita) y a 1 (habilita)  entre el código de MySQL el siguiente flag:

SET FOREIGN_KEY_CHECKS = 0;
[mi codigo]
SET FOREIGN_KEY_CHECKS = 1;

Aunque no es muy recomendable utilizar estos flags, me han sido de utilidad en numerosas ocasiones. Siempre hay que utilizarlos con cabeza y no abusar de ellos.

Ahora ya puedes borrar las tablas a cascoporro.

Comparte, comenta y colabora. Juntos haremos un mundo mejor.

MySQL MAX Ejemplo

Tres funciones de mysql y tres resultados distintos.

Sea la siguiente tabla simplificada en MySQL ·client_states.

state_id | end_date
8;2000-01-01 00:00:00
9;2012-05-15 00:00:00

Quería obtener el último estado del usuario (la fecha más alta de las registradas del usuario) y ésto es lo que me he encontrado trasteando con la función MAX()

select state_id
from states_clients
where client_id=99996
having max(end_date);

Resultado Fail

8;2000-01-01 00:00:00

select max(state_id), max(end_date)
from states_clientes
where client_id=99996;

Resultado Win

9;2012-05-15 00:00:00

select state_id, max(end_date)
from states_clients
where client_id=99996;

Resultado Fail
8;2012-05-15 00:00:00

¿Por qué?

Conclusiones + stackoverfow:

  • Having siempre va con group by. Es por ello por lo que lo devuelve el resultado esperado.  Documentación SELECT de MySQL.
  • OJICO. Aunque estés seleccionado el valor máximo de una columna, no devuelven los valores en concordancia con las filas.  Como se ve en el último ejemplo está devolviendo ‘8;2012-05-15 00:00:00 ‘en vez de devolver  ‘8;2000-01-01 00:00:00’.

Error duplicate entry MySQL

Situación: Quiero añadir un índice UNIQUE para dos índices de una tabla que no está vacía.

Error: Error duplicate entry ‘1-10’. Informa que ya existe una clave duplicada.

Solución: Hay que borrar una de las tuplas duplicadas para que nos deje añadir la restricción UNIQUE:

Secuencia de modificación de la tabla

ALTER TABLE `protocolo_alarma`
ADD UNIQUE INDEX `alarma_generada_id_tipo_id` (`tipo_id`, `alarma_generada_id`);
/* SQL Error (1062): Duplicate entry '1-10' for key 'alarma_generada_id_tipo_id' */


Estas añadiendo un UNIQUE y tienes ya tuplas duplicadas. Borramos una de ellas. 

DELETE FROM `protocolo_alarma` WHERE  `protocolo_alarma_id`=16 LIMIT 1;

Ya podemos modificar la tabla.

ALTER TABLE `protocolo_alarma`
ADD UNIQUE INDEX `alarma_generada_id_tipo_id` (`tipo_id`, `alarma_generada_id`);
/* 0 rows affected, 0 rows found. Duration for 1 query: 0,202 sec. */

Saludos!

SQL Error (1093): You can’t specify target table for update

SQL Error (1093): You can’t specify target table ‘menus_items’ for update in FROM clause

But why? Si estoy haciendo un insert!!

Os voy a comentar el motivo de mi sorpresa al encontrar el error y su preciosa solución.

Tengo una tabla con los diferentes campos  del menus, en “menus_items”. La tabla tiene una clave primaria menu_item_id que es AUTO_INCREMENT (por lo tanto está omitida en el insert).

La tabla tiene los siguientes campos:

menu_item_id,

menu_id,

parent_menu_item_id,

`code`,

`name`

Quiero que cuando inserte una secuencia en la tabla, parent_menu_item_id sea el identificador menu_item_id resultado de una búsqueda en la misma tabla por código.
Es decir, resultado de la query:

(select menu_item_id from menus_items where code='core-system' limit 1)

Así que ejecuto mi insert molón:

INSERT INTO
`menus_items`
(
<p dir="ltr">menu_id,</p>
<p dir="ltr">parent_menu_item_id,</p>
<p dir="ltr">`code`,</p>
<p dir="ltr">`name`</p>
)
VALUES
(
<p dir="ltr">1,</p>
<p dir="ltr">(select menu_item_id from menus_items where code='core-system' limit 1), 'system-auth-users',</p>
<p dir="ltr">'Usuarios'</p>
)
);

ERROR!!

SQL Error (1093): You can’t specify target table ‘menus_items’ for update in FROM clause

Efectivamente, estoy buscando sobre  una tabla en la cual estoy modificando. Si quisiera hacer una subquery a otra tabla no hay problema. Por ejemplo:

INSERT INTO
`menus_items`
(
<p dir="ltr">parent_menu_item_id,</p>
<p dir="ltr">`code`,</p>
<p dir="ltr">`name`</p>
)
VALUES
(
<p dir="ltr">(select menu_id from menus where code='BACKEND'),</p>
<p dir="ltr">'system-auth-users',</p>
<p dir="ltr">'Usuarios'</p>
)
);

Pero al ser la misma tabla MySQL no lo permite.

¿Entonces?

Bien, como solución podemos hace uso de variables:

select @MENU_ITEM_ID:=menu_item_id from menus_items where code='core-system' LIMIT 1;

Y ahora haciendo uso de la variable:

INSERT INTO
`menus_items`
(
parent_menu_item_id,
 `code`,
`name`
)
VALUES
(
@MENU_ITEM_ID,
'system-auth-users',
'Usuarios'
);

OHHHH

Me encanta :))

Si es necesario más información, si no queda claro, o si no es lo que estabais buscando. Comentarlo para que pueda mejorarlo 😉

Un saludo!


Cómo activar y visualizar el log de MySQL

En ocasiones no sabemos lo que MySQL hace por debajo. No sabemos si ha llegado a lanzarse la consulta  o qué error está dando porque no estamos capturando la excepción en la aplicación que estamos desarrollando.

La alternativa: activar y visualizar el log de MySQL.

Escribe las siguientes secuencias entrando en mysql desde consola.

Primero entra en mysql:

mysql -p

Luego activa la tabla de log de mysql:

set global general_log=ON

Pasos básicos: veamos la tabla general_log:

mysql> describe mysql.general_log;
+--------------+------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+-------------------+-----------------------------+
| event_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_host | mediumtext | NO | | NULL | |
| thread_id | int(11) | NO | | NULL | |
| server_id | int(10) unsigned | NO | | NULL | |
| command_type | varchar(64) | NO | | NULL | |
| argument | mediumtext | NO | | NULL | |
+--------------+------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.07 sec)

Así que esta tabla la puedes utilizar como una tabla común del esquema «mysql». Ejemplos:

Si deseamos encontrar las últimas llamadas a mysql. 

select * from mysql.general_log order by event_time desc limit 5;

Si deseamos buscar por una IP concreto que ha lanzado la llamada a esa base de datos:


select * from mysql.general_log where user_host like '%192.168.%' order by event_time desc limit 5;

OJO! Esta tabla crece y crece sin parar. Es recomendable desactivarla


set global general_log=OFF

y de vez en cuando limpiarla:


truncate table mysql.general_log;

Toda ayuda para ver los errores es poca! Espero os sea de utilidad

Agradecimientos a @rcasas

mysqldump: Got error: 1045: Access denied for user »@’%’ (using password: YES) when using LOCK TABLES

Este error puede dar en caso de volcados de datos de mysql con el comando desde consola mysldump. En concreto:

mysqldump   -u <nombreDelUsuario> -h <IPDelServidor> -p <nombreDeLaBaseDeDatosAVolcar> backups/2012_11_30/<NombreDelFicheroDondeQuedanLosDatos>.sql

Resultado por pantalla:

mysqldump: Got error: 1045: Access denied for user ‘asist’@’%’ (using password: YES) when using LOCK TABLES

Más datos: el usuario ‘asist’ ya estaba dado de alta y con permisos. grant all….

¿Entonces?

En foros no conseguí solucionar el error. En uno comentaba apagar mysql y reiniciar, cosa que seguía sin funcionar.

Solución encontrada!

Añadir a mysqldump –single-transaction

mysqldump  –single-transaction  -u <nombreDelUsuario> -h <IPDelServidor> -p <nombreDeLaBaseDeDatosAVolcar> backups/2012_11_30/<NombreDelFicheroDondeQuedanLosDatos>.sql

Si la base de datos está en producción. Esta no es una buena solución. Se perderán todos los datos que en el momento del volcado se estén manipulando.

Cualquier comentario/sugerencia/mejora será de agradecer!! saludos!!

** Esta entrada tiene muchas visitas, por favor si no comentáis no sé si os ha servido, si está obsoleto, si funciona o qué, gracias!! **

 

Error al crear icono de escritorio desde el jnlp Java

La situación: Al ejecutar el jnlp, se auto-creaba un icono en el escritorio.
Ahora: En actualizaciones se borra el icono y/o al descargarlo e instalarlo también.
Solución encontrada: Desinstalar la versión 7 de java. Volver a ejecutar el jnlp y comprobar que arranca con la versión 6 de java. Así, funciona.

Este error que no he conseguido solucionar por ahora y que al equipo de desarrollo nos está llevado más de un quebradero de cabeza, se ha tomado la postura cómoda de pensar que el error es de java 7. Posiblemente habrán cambiado alguna opción de configuración del jnlp o algo se está haciendo mal pero es muy extraño que el mismo jnlp, tras la actualización de java 7, no funcione correctamente.

No he encontrado ni en blogs,  google, ni las páginas oficiales de Oracle una solución mejor.

Al menos es una solución… Se agradece cualquier comentario o ayuda!