elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Bus error : 10. (muy raro)..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bus error : 10. (muy raro)..  (Leído 1,865 veces)
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Bus error : 10. (muy raro)..
« en: 19 Enero 2019, 16:46 pm »

Buenas.

Estoy practicando C++ en 3 equipos, dos de ellos son OSX y otro es Xubuntu Linux, comparto mi aprendizaje entre los computadores usando git, así que actualizo el código cada vez que me cambio de equipo.

El problema en concreto es que en osx, al llegar a cierta parte del programa, se cierra mostrándome el mensaje "Bus Error : 10", cosa que no sucede cuando lo compilo y lo ejecuto en linux, me da la espina que puede ser algo del compilador, en ambos ejecuto la misma sentencia para compilar:

$c++ -o programa programa.cpp

Tengo identificada la linea que me manda ese error, está relacionada con la función
strcpy();

Tengo entendido que el error se refiere a que estoy invocando o asignando un valor a un indice que no existe o que tiene un formato incorrecto.  Pero de ser así, linux también debería botarme el programa..

El programa esta aqui:

https://paste.ofcode.org/BYUkcz7MFesBRRFyXjNCGg
Linea 352 específicamente.


*** EDIT ***
----------------

indiceAlumnoSeleccionado equivale a -1 al momento de usar strcpy, y eso marca el error de Bus Error 10, es lógico!, pero, por qué en linux me lo permite?..

*** EDIT 2 **
----------------

Linux permite la ejecución pero funciona mal, bueno, ya tengo identificado el problema, pero sería bueno si alguien sabe, me pueda explicar por qué los compiladores se comportan así, mi programa tenía un error y el compilador del Linux lo omitió...


« Última modificación: 19 Enero 2019, 17:10 pm por digimikeh » En línea

Dungeons & dragons;
dragons.Attack();
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Bus error : 10. (muy raro)..
« Respuesta #1 en: 19 Enero 2019, 20:58 pm »

Descárgate el estándar o el draft (este último es gratuito) y busca los arrays y a ver que pasa con sus índices. Si ante esto te dice que es undefined behavior quiere decir que los programadores del compilador pueden hacer lo que quieran ante esto, incluso iniciar la secuencia de ignición de un Saturno V a la luna.


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: Bus error : 10. (muy raro)..
« Respuesta #2 en: 20 Enero 2019, 10:59 am »

Le estas dando al compilador una mision dificil.

El compilador, ademas de revisar que la sintaxis este bien, genera el codigo que se ejecutara posteriormente. Para el caso particular de la indexacion del arreglo, es un desplazamiento desde el comienzo del mismo unido al valor del indice. En sencillo, el compilador generara una suma:  direccion de comienzo + desplazamiento. La suma se calcula en tiempo de ejecucion.

En tiempo de ejecucion, mucho despues de que el compilador actuo', la direccion de memoria resultante de la suma de antes dicha podria ser mas alla o mas aca de los limites del arreglo mismo.

Este es el primer problema que te puedes enfrentar, el siguiente es que las distintas arquitecturas tienen distintas exigencias, por ejemplo, que los enteros tienen que estar en direcciones de memoria multiplos de 4 y aunque validamente podrias tener una direccion de memoria, esta no sea posible de desreferenciar por la restriccion antes dicha. Este es el bus error.

El problema es doble: Salirte de los limites del arreglo, y luego tener direccion de memoria con mal alineamiento.

En general los compiladores no tienen ninguna logica para "ejecutar" el programa para poder detectar si este problema se va a producir en tiempo de ejecucion.

Sin embargo, para el problema de salirse de los limites del arreglo existen productos comerciales que realizan chequeos estaticos y podrian advertirte el problema. En general, los compiladores no hacen tales chequeos.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
digimikeh

Desconectado Desconectado

Mensajes: 191


Ver Perfil
Re: Bus error : 10. (muy raro)..
« Respuesta #3 en: 26 Enero 2019, 20:13 pm »

Ya esta, gracias por la explicación...
En línea

Dungeons & dragons;
dragons.Attack();
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error muy raro
PHP
naderST 7 12,327 Último mensaje 9 Julio 2009, 05:49 am
por naderST
ayuda error raro...
.NET (C#, VB.NET, ASP)
kakashi20 2 2,496 Último mensaje 15 Mayo 2010, 19:12 pm
por kakashi20
Error de compilación en Dev C++ raro
Programación C/C++
Kasswed 9 4,823 Último mensaje 8 Mayo 2012, 00:34 am
por n0z
Error C++ Raro
Dudas Generales
Guillito 2 2,376 Último mensaje 30 Agosto 2021, 01:39 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines