Option "file" requires an argument

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Option "file" requires an argument

Tino Calancha

The following two command lines should be equivalent:

gst -f tests/lists1.st 5
gst --file tests/lists1.st 5

While the former works, the later throws this error:

gst: Aborted
gst: Error occurred while not in byte code interpreter!!
/usr/local/bin/../lib64/libgst.so.7(+0x736f7)[0x7f19b8a0b6f7]
/lib64/libc.so.6(+0x3d530)[0x7f19b8574530]
/lib64/libc.so.6(gsignal+0x145)[0x7f19b85744a5]
/lib64/libc.so.6(abort+0x116)[0x7f19b855d864]
/usr/local/bin/../lib64/libgst.so.7(+0x11c58)[0x7f19b89a9c58]
/usr/lib64/libsigsegv.so.2(+0x20bc)[0x7f19b89940bc]
/lib64/libc.so.6(+0x3d530)[0x7f19b8574530]
gst(main+0x100)[0x4022a0]
/lib64/libc.so.6(__libc_start_main+0xd5)[0x7f19b855eb25]
gst(_start+0x2e)[0x4024de]


--8<-----------------------------cut here---------------start------------->8---
commit 589b4354c34dd2bb2f57960a13910a12176119cf
Author: Tino Calancha <[hidden email]>
Date:   Thu Mar 25 15:46:18 2021 +0100

     * main.c (long_options): Option "file" requires an argument

diff --git a/main.c b/main.c
index f28aad3e..a4a9128b 100644
--- a/main.c
+++ b/main.c
@@ -132,7 +132,7 @@ static const struct option long_options[] = {
    {"core-dump", 0, 0, 'c'},
    {"declaration-trace", 0, 0, 'D'},
    {"execution-trace", 0, 0, 'E'},
-  {"file", 0, 0, 'f'},
+  {"file", 1, 0, 'f'},
    {"kernel-directory", 1, 0, OPT_KERNEL_DIR},
    {"no-user-files", 0, 0, OPT_NO_USER},
    {"no-gc-message", 0, 0, 'g'},
--8<-----------------------------cut here---------------end--------------->8---

On top of commit: dfe4b5660037c4d178853ee00458a75e51a88563

Reply | Threaded
Open this post in threaded view
|

Re: Option "file" requires an argument

stes

Thanks for reporting these documentation fixes and the crash/fix for it.

I hope your fixes will be added to the git repository, and/or to a future release of GNU smalltalk.

Also when reading the error that is thrown, this was sort of making it clear,
this may be a trivial observation, that it's a simple SIGSEGV caught by libsigsegv.

I've seen other similar errors such as:

kernel/../scripts/Package.st:31: Error occurred while not in byte code interpreter!!
libgst/.libs/libgst.so.7.1.3'backtrace_on_signal+0x57 [0xffff80ffbf2dc14a]

issued by gst-tool for some command line switches, note the similar (but slightly different) error.

By default the GNU smalltalk configure script detects it and if installed, enables libsigsegv.

When building GNU smalltalk with : ./configure --disable-generational-gc --with-system-libsigsegv=no

it disables due to --with-system-libsigsegv=no  libsigsegv.

The issue then becomes (for gnu smalltalk 3.2.91) :

# gst -f tests/lists1.st 5
5 4
false
true
1
1
6 5

# gst --file tests/lists1.st 5
Segmentation Fault (core dumped)

Note the simple core dump with the --file option, in this case because gst is compiled without libsigsegv.

Then with your fix:

# gst --file tests/lists1.st  5
5 4
false
true
1
1
6 5

So as far as I can see the fix that you posted works fine, and hopefully it gets added to GNU smalltalk.

Regards,
David Stes
 
----- Op 25 mar 2021 om 16:09 schreef Tino Calancha [hidden email]:

> The following two command lines should be equivalent:
>
> gst -f tests/lists1.st 5
> gst --file tests/lists1.st 5
>
> While the former works, the later throws this error:
>
> gst: Aborted
> gst: Error occurred while not in byte code interpreter!!
> /usr/local/bin/../lib64/libgst.so.7(+0x736f7)[0x7f19b8a0b6f7]
> /lib64/libc.so.6(+0x3d530)[0x7f19b8574530]
> /lib64/libc.so.6(gsignal+0x145)[0x7f19b85744a5]
> /lib64/libc.so.6(abort+0x116)[0x7f19b855d864]
> /usr/local/bin/../lib64/libgst.so.7(+0x11c58)[0x7f19b89a9c58]
> /usr/lib64/libsigsegv.so.2(+0x20bc)[0x7f19b89940bc]
> /lib64/libc.so.6(+0x3d530)[0x7f19b8574530]
> gst(main+0x100)[0x4022a0]
> /lib64/libc.so.6(__libc_start_main+0xd5)[0x7f19b855eb25]
> gst(_start+0x2e)[0x4024de]
>
>
> --8<-----------------------------cut here---------------start------------->8---
> commit 589b4354c34dd2bb2f57960a13910a12176119cf
> Author: Tino Calancha <[hidden email]>
> Date:   Thu Mar 25 15:46:18 2021 +0100
>
>     * main.c (long_options): Option "file" requires an argument
>
> diff --git a/main.c b/main.c
> index f28aad3e..a4a9128b 100644
> --- a/main.c
> +++ b/main.c
> @@ -132,7 +132,7 @@ static const struct option long_options[] = {
>    {"core-dump", 0, 0, 'c'},
>    {"declaration-trace", 0, 0, 'D'},
>    {"execution-trace", 0, 0, 'E'},
> -  {"file", 0, 0, 'f'},
> +  {"file", 1, 0, 'f'},
>    {"kernel-directory", 1, 0, OPT_KERNEL_DIR},
>    {"no-user-files", 0, 0, OPT_NO_USER},
>    {"no-gc-message", 0, 0, 'g'},
> --8<-----------------------------cut here---------------end--------------->8---
>
> On top of commit: dfe4b5660037c4d178853ee00458a75e51a88563