Fatal signal: Segmentation Fault (SDL Parachute Deployed)

Hello there!

I’m interested in OpenGL programming and I have a few projects, where
I need OpenGL under Linux. Loading pictures and opening Windows without
SDL is a pain, so I did not want to miss SDL.

Since my first use of SDL I had a lot of problems, all related to
that error message:

Fatal signal: Segmentation Fault (SDL Parachute Deployed)

Even on newly installed Debian systems I got this message. I’ve
worked out a few methodes, that worked for me since now. One of them
is “reinstalling the video drivers”, eg. from NVIDIA or ATI. In the
most cases, this helps fixing the problem, because “libGL.so” gets
reinstalled. Another methode is “reinstalling libsdl1.2-dev” and
"xlibmesa" packages, but non of them work for me right now.

Sometimes the SDL window is full of funny colors if I start my program,
these colors seems to be correlated to the colors of my desktop
background image.

I noticed that in some cases one line of code is responsible for the
segmentation fault:

gluBuild2DMipmaps(GL_TEXTURE_2D, 3, tex_image->w,
tex_image->h, GL_BGR,
GL_UNSIGNED_BYTE, tex_image->pixels);

where tex_image' is of typeSDL_Surface*’. If I change that line to
this one:

glTexImage2D(GL_TEXTURE_2D, 0, 3, tex_image->w,
tex_image->h, 0, GL_BGR,
GL_UNSIGNED_BYTE, tex_image->pixels);

I get these funny colors I’ve talked about, no segemtatian fault anymore.

Is there anyone with a few more fixes for this problem? Any help
would be appreciated.

Thanks.–
Simon Fuhrmann | NightSlayer at gmx.de | http://www.dismember.de
All people talk about the real life, but where can I download it?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1On Monday 08 March 2004 10:03, Simon Fuhrmann wrote:

I noticed that in some cases one line of code is responsible for the
segmentation fault:

gluBuild2DMipmaps(GL_TEXTURE_2D, 3, tex_image->w,
tex_image->h, GL_BGR,
GL_UNSIGNED_BYTE, tex_image->pixels);

where tex_image' is of typeSDL_Surface*’. If I change that line to
this one:

glTexImage2D(GL_TEXTURE_2D, 0, 3, tex_image->w,
tex_image->h, 0, GL_BGR,
GL_UNSIGNED_BYTE, tex_image->pixels);

I get these funny colors I’ve talked about, no segemtatian fault anymore.

Those funny colors are probably caused by the same thing that causes the
segmentation faults: wrong memory accesses. Are you sure that
a) tex_image is locked, or is a surface that doesn’t have to be locked and
b) the format of the surface is actually BGR (and not RGB, or RGBA, or
something) and
c) the pitch of the surface is actually the same as the width?

You must be absolutely sure about all these points, or you will get wrong
results.

cu,
Nicolai
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFATKX7sxPozBga0lwRAqw8AKCNsMtMrGwKL7m1BmADzoVBU2xbWACgjZWa
EvrKX6WsdbkP3AlAc2NrFMw=
=5vUl
-----END PGP SIGNATURE-----

Hello!On Mon, Mar 08, 2004 at 05:57:30PM +0100, Nicolai Haehnle wrote:

Those funny colors are probably caused by the same thing that causes the
segmentation faults: wrong memory accesses. Are you sure that
a) tex_image is locked, or is a surface that doesn’t have to be locked and
b) the format of the surface is actually BGR (and not RGB, or RGBA, or
something) and
c) the pitch of the surface is actually the same as the width?

You must be absolutely sure about all these points, or you will get wrong
results.

The program works on many systems, in this case on all NVIDIA driven systems.
The segmentation fault is on an ATI system. Not only my program, even those
from `nehe.gamedev.net’ do not work. E.g. nehe lesson 6 has “funny colors”,
nehe lesson 7 produces the segmentation fault.

I don’t think that my code is incorrect, I think it’s a configuration
problem.

Regards.


Simon Fuhrmann | NightSlayer at gmx.de | http://www.dismember.de
All people talk about the real life, but where can I download it?

A friend of mine installed SDL via Debian package system; precompiled
SDL apps work perfectly, but now he wants to compile the test
applications delivered with SDL.

Can one hand over a simple make file (nothing automatic, just something
that inclused the sdl libaries and the libaries sdl uses under linux,)
for gcc?

That would help us quite much,
if you think this is Off Topic, please reply directly to me, if you
think you can help out. Else use the list.–
Thanks in advance
Jonas

Hello !

If you just to want to compile the test programms
that came with sdl use something like this :

gcc testsprite.c -o testsprite sdl-config --cflags sdl-config --libs

Using sdl-config gcc has all the information it needs
to compile the c file.

CU

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1On Monday 08 March 2004 02:10 pm, Jonas Hartmann wrote:

Can one hand over a simple make file (nothing automatic, just something
that inclused the sdl libaries and the libaries sdl uses under linux,)
for gcc?

That would help us quite much,
if you think this is Off Topic, please reply directly to me, if you
think you can help out. Else use the list.

Here is the Makefile' for a small prog I've been working on, notice thesdl-config’ which is a small script, included in the SDL_devel package,
which will generate all the appropriate cflags'ldflags’ for you.

Make the appropriate changes to match your work.

[ Makefile ]
CC = gcc
CXX = g++
LDFLAGS = sdl-config --libs -lSDL_image
EXE = SpongE
OBJ = sponge.o
SRC = sponge.cc
STRIP = /usr/bin/strip
CFLAGS = -Wall -ggdb3 sdl-config --cflags

$(EXE): $(OBJ)
$(CXX) $(OBJ) -o $(EXE) $(LDFLAGS)

$(OBJ): $(SRC)
$(CXX) $(CFLAGS) -c $(SRC)

install: $(EXE)
$(STRIP) $(EXE)
clean:
rm -f $(OBJ) $(EXE) *.core

[ END Makefile ]

Enjoy,

  • -Juan D. Espinoza

"Happiness makes up in height for what it lacks in length."
Rober Frost
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)

iD8DBQFATPqOD1KpJUG76rERApPjAJ4mIpmWBFFuf9iSFc9Efaw88H5bLQCdGXCG
ZQHq/l/48KBWD8I6yUXOasU=
=tuUe
-----END PGP SIGNATURE-----

Under systems like Debian and RedHat, make sure you ALSO download the
"-devel" or “-dev” versions of packages.

For example, “libsdl-ttf1.2” includes simply the dynamic link library
(“libSDL_ttf-1.2.so.0.2.0”, for example), and maybe some documentation.

That works great when running pre-compiled applications (e.g., something
that comes from another binary package in your distro, like a game).

However, when you want to COMPILE, you’ll also need “libsdl-ttf1.2-dev”,
which contains the header file, static link library, and typically an
example (e.g., SDL_ttf includes “Makefile” and “showfont.c” under DebaiN).

Hope that helps!

-bill!
bill at newbreedsoftware.com "Hey Shatner, ya remember that episode of
http://newbreedsoftware.com/bill/ Space Trek where your show got cancelled?"On Mon, Mar 08, 2004 at 11:10:17PM +0100, Jonas Hartmann wrote:

A friend of mine installed SDL via Debian package system; precompiled
SDL apps work perfectly, but now he wants to compile the test
applications delivered with SDL.

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1On Monday 08 March 2004 21:46, Simon Fuhrmann wrote:

Hello!

On Mon, Mar 08, 2004 at 05:57:30PM +0100, Nicolai Haehnle wrote:

Those funny colors are probably caused by the same thing that causes
the segmentation faults: wrong memory accesses. Are you sure that
a) tex_image is locked, or is a surface that doesn’t have to be locked
and b) the format of the surface is actually BGR (and not RGB, or RGBA,
or something) and
c) the pitch of the surface is actually the same as the width?

You must be absolutely sure about all these points, or you will get
wrong results.

The program works on many systems, in this case on all NVIDIA driven
systems. The segmentation fault is on an ATI system. Not only my program,
even those from `nehe.gamedev.net’ do not work. E.g. nehe lesson 6 has
"funny colors", nehe lesson 7 produces the segmentation fault.

I don’t think that my code is incorrect, I think it’s a configuration
problem.

Well, your program should be able to cope with any configuration conforming
to the specs, so there’s a 99.9% chance that it’s still your program that
is at fault.

I noticed you’re using GL_BGR, for example. IIRC, this is part of an
extension, and not a part of the OpenGL core spec (or if it is, it has only
been added in one of the more recent versions). Maybe the ATI driver
doesn’t support GL_BGR? Of course the driver should just issue an Invalid
Operation error in this case instead of crashing - but that only means both
you and the driver are at fault…

cu,
Nicolai
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFATfzCsxPozBga0lwRAn2dAKCcAZk3VBI2o2rgbVVRtJlyM343/gCggx/T
GHapa1/hez1Gqkpzk++uWYc=
=wxxg
-----END PGP SIGNATURE-----

[snip]

The program works on many systems, in this case on all NVIDIA driven systems.
The segmentation fault is on an ATI system. Not only my program, even those
from `nehe.gamedev.net’ do not work. E.g. nehe lesson 6 has “funny colors”,
nehe lesson 7 produces the segmentation fault.

Are you using the framebuffer from the linux console? I had a
similar sounding problem with the fb on ATI chips when
initialising the screen using bpp=0 SDL_SetVideoMode. SDL was
version 1.2.5. Changing it to always using bpp=32 cured my
problem.

I’m not sure if this is a bug or a feature: bpp=0 is supposed to
mean “the same as the current display bits per pixel,” but of
course in text mode there’s no current bpp as such.

Regards,

Joonas PihlajaOn Mon, 8 Mar 2004, Simon Fuhrmann wrote:

Hello.On Wed, Mar 10, 2004 at 09:58:42AM +0200, M Joonas Pihlaja wrote:

Are you using the framebuffer from the linux console? I had a
similar sounding problem with the fb on ATI chips when
initialising the screen using bpp=0 SDL_SetVideoMode. SDL was
version 1.2.5. Changing it to always using bpp=32 cured my
problem.

No, I’m using SDL from XFree86. Even those games around there
using SDL segfaults, e.g. Black Shades http://icculus.org/blackshades/.

Regards.


Simon Fuhrmann | NightSlayer at gmx.de | http://www.dismember.de
All people talk about the real life, but where can I download it?

I’ve seen the same problem not only on ATI machines. I tried a free linux
game from the Internet, Black Shades http://icculus.org/blackshades/,
it’s the same problem here. The same problem at friend of mine, with
a NVIDIA graphics chip, he also uses Debain Sarge.

RegardsOn Tue, Mar 09, 2004 at 06:20:01PM +0100, Nicolai Haehnle wrote:

Well, your program should be able to cope with any configuration conforming
to the specs, so there’s a 99.9% chance that it’s still your program that
is at fault.


Simon Fuhrmann | NightSlayer at gmx.de | http://www.dismember.de
All people talk about the real life, but where can I download it?

Everytime the following code exit, I get the error: “Fatal signal: Segmentation
Fault (SDL Parachute Deployed)”. I know this is caused by exiting the program
incorrectly. Can someone look at my code and tell me where goes wrong?

I am newbie to SDL, so don’t be surprised if you see any silly mistakes.###################################################################
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include “SDL.h”
#include “SDL_thread.h”

SDL_Surface *screenMain;
SDL_Overlay *overlay;

static int exitingFlag = 0;
static int framecounter = 0;

#define TIME 5000

#define WIDTH 176
#define HEIGHT 144

#define ZOOM_RATIO 3

#define SCREEN_WIDTH (WIDTH * ZOOM_RATIO)
#define SCREEN_HEIGHT (HEIGHT * ZOOM_RATIO)

typedef unsigned char byte;
byte image[WIDTH][HEIGHT][3];

int Snd(void){
return 0;
}

int Rcv(void){
int x, y;
byte *Y, *V, *U;
Y = overlay->pixels[0];
V = overlay->pixels[1];
U = overlay->pixels[2];

for (y = 0; y < HEIGHT; y++){
	for (x = 0; x < WIDTH; x++){
		Y[y * WIDTH + x] = (byte)(rand() % 255);
		if (((x % 2) == 0) || ((y % 2) == 0)){
			V[((y * WIDTH) / 2) + (x / 2)] = (byte)(128);
			U[((y * WIDTH) / 2) + (x / 2)] = (byte)(128);
		}
	}
}
return 0;

}

int SndThreadEntryPoint(void *data){
if (data != NULL) return -1;
while (exitingFlag == 0) {
Snd();
SDL_Delay(100);
}
return 0;
}

int RcvThreadEntryPoint(void data){
if (data != NULL) return -1;
while (exitingFlag == 0) {
Rcv();
/
DrawThreadEntryPoint(NULL); */
{
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.w = SCREEN_WIDTH;
rect.h = SCREEN_HEIGHT;

		SDL_DisplayYUVOverlay(overlay, &rect);
		framecounter++;
	}
	
}
return 0;

}

int main(void){

SDL_Thread *SndThread, *RcvThread;

if (SDL_Init(SDL_INIT_VIDEO) !=  0){
	printf("Unable to initialize SDL: %s\n", SDL_GetError());
	return -1;
}

atexit(SDL_Quit);

screenMain = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16,
	SDL_HWSURFACE);
if (screenMain == NULL){
	printf("Unable to set video mode: %s\n", SDL_GetError());
	return -1;
}
overlay = SDL_CreateYUVOverlay(WIDTH, HEIGHT,
	SDL_YV12_OVERLAY, screenMain);

printf("planes = %d\n", overlay->planes);
printf("pitches[0] = %d\n", overlay->pitches[0]);
printf("pitches[1] = %d\n", overlay->pitches[1]);
printf("pitches[2] = %d\n", overlay->pitches[2]);
printf("hw_overlay = %d\n", overlay->hw_overlay);


SndThread = SDL_CreateThread(SndThreadEntryPoint, NULL);
RcvThread = SDL_CreateThread(RcvThreadEntryPoint, NULL);

SDL_Delay(TIME);
SDL_FreeYUVOverlay(overlay);
SDL_FreeSurface(screenMain);
exitingFlag = 1;
printf("framerate = %d\n", (framecounter / (TIME / 1000)));

{
	char name[256];
	printf("%s\n", SDL_VideoDriverName(name, 256));
}

SDL_Delay(1000);

return 0;

}
###################################################################

Your main thread is exiting before your other threads. This won’t
happen on all systems, it depends on the way they are scheduled by your
kernel. For instance one of my computers your code runs just fine, on
another it crashes at the end. Where it crashes, if I increase the
delay at the end, it does not crash. Conversely, shortening the delay
on the other system causes it to crash.

You should SDL_WaitThread your threads at, or perhaps, SDL_KillThread
before returning from your main routine.

On a side note, your main function needs its arguments. This won’t
compile on systems that require SDLmain.

Everytime the following code exit, I get the error: “Fatal signal:
Segmentation
Fault (SDL Parachute Deployed)”. I know this is caused by exiting the
program
incorrectly. Can someone look at my code and tell me where goes wrong?

I am newbie to SDL, so don’t be surprised if you see any silly
mistakes.

###################################################################
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include “SDL.h”
#include “SDL_thread.h”

SDL_Surface *screenMain;
SDL_Overlay *overlay;

static int exitingFlag = 0;
static int framecounter = 0;

#define TIME 5000

#define WIDTH 176
#define HEIGHT 144

#define ZOOM_RATIO 3

#define SCREEN_WIDTH (WIDTH * ZOOM_RATIO)
#define SCREEN_HEIGHT (HEIGHT * ZOOM_RATIO)

typedef unsigned char byte;
byte image[WIDTH][HEIGHT][3];

int Snd(void){
return 0;
}

int Rcv(void){
int x, y;
byte *Y, *V, *U;
Y = overlay->pixels[0];
V = overlay->pixels[1];
U = overlay->pixels[2];

for (y = 0; y < HEIGHT; y++){
for (x = 0; x < WIDTH; x++){
Y[y * WIDTH + x] = (byte)(rand() % 255);
if (((x % 2) == 0) || ((y % 2) == 0)){
V[((y * WIDTH) / 2) + (x / 2)] = (byte)(128);
U[((y * WIDTH) / 2) + (x / 2)] = (byte)(128);
}
}
}
return 0;
}

int SndThreadEntryPoint(void *data){
if (data != NULL) return -1;
while (exitingFlag == 0) {
Snd();
SDL_Delay(100);
}
return 0;
}

int RcvThreadEntryPoint(void data){
if (data != NULL) return -1;
while (exitingFlag == 0) {
Rcv();
/
DrawThreadEntryPoint(NULL); */
{
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.w = SCREEN_WIDTH;
rect.h = SCREEN_HEIGHT;

  	SDL_DisplayYUVOverlay(overlay, &rect);
  	framecounter++;
  }

}
return 0;
}

int main(void){

SDL_Thread *SndThread, *RcvThread;

if (SDL_Init(SDL_INIT_VIDEO) != 0){
printf(“Unable to initialize SDL: %s\n”, SDL_GetError());
return -1;
}

atexit(SDL_Quit);

screenMain = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16,
SDL_HWSURFACE);
if (screenMain == NULL){
printf(“Unable to set video mode: %s\n”, SDL_GetError());
return -1;
}
overlay = SDL_CreateYUVOverlay(WIDTH, HEIGHT,
SDL_YV12_OVERLAY, screenMain);

printf(“planes = %d\n”, overlay->planes);
printf(“pitches[0] = %d\n”, overlay->pitches[0]);
printf(“pitches[1] = %d\n”, overlay->pitches[1]);
printf(“pitches[2] = %d\n”, overlay->pitches[2]);
printf(“hw_overlay = %d\n”, overlay->hw_overlay);

SndThread = SDL_CreateThread(SndThreadEntryPoint, NULL);
RcvThread = SDL_CreateThread(RcvThreadEntryPoint, NULL);

SDL_Delay(TIME);
SDL_FreeYUVOverlay(overlay);
SDL_FreeSurface(screenMain);
exitingFlag = 1;
printf(“framerate = %d\n”, (framecounter / (TIME / 1000)));

{
char name[256];
printf("%s\n", SDL_VideoDriverName(name, 256));
}

SDL_Delay(1000);

return 0;
}
###################################################################


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

  • Donny VisznekiOn Jul 29, 2004, at 8:14 PM, Yu Wang wrote:

I meant it won’t link, because during preprocessing on systems
requiring SDLmain, the SDL header files search for and change your main
routine, but its search criteria depend on a function taking two
arguments (or perhaps more, I never really checked.)On Jul 29, 2004, at 9:34 PM, Donny Viszneki wrote:

On a side note, your main function needs its arguments. This won’t
compile on systems that require SDLmain.

Thanks! I solved the problem now…

Hi, recently my application encountered an unusual bug. The bug seemed
random so I can’t recreate it (only if I was lucky enough). The bug
appears every now and then when I clicked the mouse. It displayed :
“Fatal signal: Segmentation Fault (SDL Parachute Deployed)”.

The application itself was initiated inside of .xinitrc because I wanted
it to be started automatically everytime I logged in. So after the error
appears, I opened an xterm console and restarted the application. And the
problem didn’t appear (yet!).

The question is:

  1. What caused the SDL Parachute error?
  2. Why was it appear random ?

Can anybody help me? Many-many thanks in advance.

Fare thee well,
Bawenang R. P. P.----------------
ERROR: Brain not found. Please insert a new brain!

?Do nothing which is of no use.? - Miyamoto Musashi.

“I live for my dream. And my dream is to live my life to the fullest.”

you have a memory corruption bug in your program. SDL caches the
segfault signal and tells with the error message. use a debugger and
valgrind to correct your program.

best regards …
clemensOn 2/21/07, benang at cs.its.ac.id wrote:

Hi, recently my application encountered an unusual bug. The bug seemed
random so I can’t recreate it (only if I was lucky enough). The bug
appears every now and then when I clicked the mouse. It displayed :
“Fatal signal: Segmentation Fault (SDL Parachute Deployed)”.

The application itself was initiated inside of .xinitrc because I wanted
it to be started automatically everytime I logged in. So after the error
appears, I opened an xterm console and restarted the application. And the
problem didn’t appear (yet!).

The question is:

  1. What caused the SDL Parachute error?
  2. Why was it appear random ?

Can anybody help me? Many-many thanks in advance.

El Mi?rcoles, 21 de Febrero de 2007 14:34, benang at cs.its.ac.id escribi?:

  1. What caused the SDL Parachute error?

To simplify this topic a little bit, I would say that a segmentation fault
means your that program tried to read or write a piece of memory not of its
ownership. It is a very common mistake, mainly caused by incorrect handling
of pointers. Or maybe you are also sending incorrect data to other librarie’s
functions, and so on.

  1. Why was it appear random ?

You are likely reading or writing a part of the memory through a wrong array
index or pointer. Whenever the index or the pointer is correct, no error is
generated.

You can run the program in the debugger and look at the backtrace when your
program crashes to know what part of the code is buggy.

HTH,

Alberto

Thanks. I’ve tried using gdb. But I can’t recreate the bug. Even when I
tried clicking at the same time as when the bug last occurs, it still
didn’t appear. I’m still confused right now.

Alberto Luaces said:

El Mi?rcoles, 21 de Febrero de 2007 14:34, @benang_at_cs.its.ac escribi?:

  1. What caused the SDL Parachute error?

To simplify this topic a little bit, I would say that a segmentation fault
means your that program tried to read or write a piece of memory not of
its
ownership. It is a very common mistake, mainly caused by incorrect
handling
of pointers. Or maybe you are also sending incorrect data to other
librarie’s
functions, and so on.

  1. Why was it appear random ?

You are likely reading or writing a part of the memory through a wrong
array
index or pointer. Whenever the index or the pointer is correct, no error
is
generated.

You can run the program in the debugger and look at the backtrace when
your
program crashes to know what part of the code is buggy.

HTH,

Alberto


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Fare thee well,
Bawenang R. P. P.----------------
ERROR: Brain not found. Please insert a new brain!

?Do nothing which is of no use.? - Miyamoto Musashi.

“I live for my dream. And my dream is to live my life to the fullest.”

Well, I’ve tried running it from gdb and it worked fine. All attempts to
recreate the problem is not working. And when I used valgrind, it didn’t
work. It exited the valgrind even at the start of the program. When I
looked at the backtrace of valgrind, it returned lots of error like:

Use of uninitialised value of size 4

Invalid read of size 4

Syscall param ioctl(arg) contains uninitialised byte(s)

Syscall param write(buf) points to uninitialised byte(s)

Segmentation fault

The funny thing is, even when it cannot be run from valgrind, I can run it
from the terminal console (until the SDL Parachute deployed).

clemens kirchgatterer said:> On 2/21/07, @benang_at_cs.its.ac <@benang_at_cs.its.ac> wrote:

Hi, recently my application encountered an unusual bug. The bug seemed
random so I can’t recreate it (only if I was lucky enough). The bug
appears every now and then when I clicked the mouse. It displayed :
“Fatal signal: Segmentation Fault (SDL Parachute Deployed)”.

The application itself was initiated inside of .xinitrc because I wanted
it to be started automatically everytime I logged in. So after the error
appears, I opened an xterm console and restarted the application. And
the
problem didn’t appear (yet!).

The question is:

  1. What caused the SDL Parachute error?
  2. Why was it appear random ?

Can anybody help me? Many-many thanks in advance.

you have a memory corruption bug in your program. SDL caches the
segfault signal and tells with the error message. use a debugger and
valgrind to correct your program.

best regards …
clemens


SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org

Fare thee well,
Bawenang R. P. P.


ERROR: Brain not found. Please insert a new brain!

?Do nothing which is of no use.? - Miyamoto Musashi.

“I live for my dream. And my dream is to live my life to the fullest.”