public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* GCC ICE bug with segfault...
@ 2016-08-22  8:47 leon zadorin
  2016-08-22  8:58 ` lhmouse
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: leon zadorin @ 2016-08-22  8:47 UTC (permalink / raw)
  To: gcc-help

Hello,

I am not sure whether I can report a bug without an account in
bugzilla (account creation temporarily disabled on that site)

... so I am posting this here for the time being

GCC (trunk, rev 239646 -- but likely with earlier versions also, I
haven't had the chance to test those yet) appears to ICE with
segmentation fault given the following code (validity of which aside
for the moment):

#include <stdlib.h>
#include <string.h>

struct Blah {
    char * a;
};

template <typename T>
void Test(T & Obj) {
    auto && a(Obj.a);
    a = (char*)::malloc(1024 * 1024);
    ::memset(a + 28, 'X', 6);
}

int main() {
    Blah d;
    Test(d);
  return 0;
}

When compiled as
c++  -Wall main.c++

Causes GCC itself to crash hard:

main.c++: In function 'void Test(T&)':
main.c++:12:25: internal compiler error: Segmentation fault
  ::memset(a + 28, 'X', 6);


Whereas dropping -Wall prevents compiler from crashing.
Taking out the 'template' nature from the above code also allows
compiler not to crash (even with -Wall being used). Similar
(non-crash) outcome is if one simply takes out "+ 28" offset from the
code...

Target: x86_64-w64-mingw32
Configured with: ../gcc-trunk/configure --enable-checking=release
--disable-werror --disable-multilib --host=x86_64-w64-mingw32 --build
=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--prefix=/C/YYYYY/installed --enable-lto --program-prefix=
--enable-langu
ages=c,c++,lto --disable-nls --disable-libgcj --enable-threads=posix
--enable-seh-exceptions --enable-graphite
--with-sysroot=/C/YYYYY/installed
Thread model: posix
gcc version 7.0.0 20160822 (experimental) (GCC)

Perhaps it is something silly I have done with my GCC build, I will
try to retest with the released version 6.0 on mingw 64 target soon
also.

Best regards
leon.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re:  GCC ICE bug with segfault...
  2016-08-22  8:47 GCC ICE bug with segfault leon zadorin
@ 2016-08-22  8:58 ` lhmouse
  2016-08-22  9:14   ` Jonathan Wakely
  2016-08-22 13:24   ` leon zadorin
  2016-08-22  9:12 ` Jonathan Wakely
  2016-08-22 14:58 ` Markus Trippelsdorf
  2 siblings, 2 replies; 12+ messages in thread
From: lhmouse @ 2016-08-22  8:58 UTC (permalink / raw)
  To: leon zadorin, gcc-help

Unreproducible on 6.1.0 targeting either i686 or x86_64.

In order to make a *minimal* testcase, please remove unrelated stuff,
such as redundant  `#include`s. For example, you can run
`g++ -E -o foo.cc` to get a preprocessed source file then
cut unrelated code off.

------------------				 
Best regards,
lh_mouse
2016-08-22

-------------------------------------------------------------
发件人:leon zadorin <leonleon77@gmail.com>
发送日期:2016-08-22 16:47
收件人:gcc-help
抄送:
主题:GCC ICE bug with segfault...

Hello,

I am not sure whether I can report a bug without an account in
bugzilla (account creation temporarily disabled on that site)

... so I am posting this here for the time being

GCC (trunk, rev 239646 -- but likely with earlier versions also, I
haven't had the chance to test those yet) appears to ICE with
segmentation fault given the following code (validity of which aside
for the moment):

#include <stdlib.h>
#include <string.h>

struct Blah {
    char * a;
};

template <typename T>
void Test(T & Obj) {
    auto && a(Obj.a);
    a = (char*)::malloc(1024 * 1024);
    ::memset(a + 28, 'X', 6);
}

int main() {
    Blah d;
    Test(d);
  return 0;
}

When compiled as
c++  -Wall main.c++

Causes GCC itself to crash hard:

main.c++: In function 'void Test(T&)':
main.c++:12:25: internal compiler error: Segmentation fault
  ::memset(a + 28, 'X', 6);


Whereas dropping -Wall prevents compiler from crashing.
Taking out the 'template' nature from the above code also allows
compiler not to crash (even with -Wall being used). Similar
(non-crash) outcome is if one simply takes out "+ 28" offset from the
code...

Target: x86_64-w64-mingw32
Configured with: ../gcc-trunk/configure --enable-checking=release
--disable-werror --disable-multilib --host=x86_64-w64-mingw32 --build
=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--prefix=/C/YYYYY/installed --enable-lto --program-prefix=
--enable-langu
ages=c,c++,lto --disable-nls --disable-libgcj --enable-threads=posix
--enable-seh-exceptions --enable-graphite
--with-sysroot=/C/YYYYY/installed
Thread model: posix
gcc version 7.0.0 20160822 (experimental) (GCC)

Perhaps it is something silly I have done with my GCC build, I will
try to retest with the released version 6.0 on mingw 64 target soon
also.

Best regards
leon.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: GCC ICE bug with segfault...
  2016-08-22  8:47 GCC ICE bug with segfault leon zadorin
  2016-08-22  8:58 ` lhmouse
@ 2016-08-22  9:12 ` Jonathan Wakely
  2016-08-22 14:58 ` Markus Trippelsdorf
  2 siblings, 0 replies; 12+ messages in thread
From: Jonathan Wakely @ 2016-08-22  9:12 UTC (permalink / raw)
  To: leon zadorin; +Cc: gcc-help

On 22 August 2016 at 09:47, leon zadorin wrote:
> Hello,
>
> I am not sure whether I can report a bug without an account in
> bugzilla (account creation temporarily disabled on that site)

You already have an account for your email address, but it looks like
you've never confirmed it.

As the site says, if you contact the admins they will create an account for you.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: GCC ICE bug with segfault...
  2016-08-22  8:58 ` lhmouse
@ 2016-08-22  9:14   ` Jonathan Wakely
  2016-08-22 13:24   ` leon zadorin
  1 sibling, 0 replies; 12+ messages in thread
From: Jonathan Wakely @ 2016-08-22  9:14 UTC (permalink / raw)
  To: lhmouse; +Cc: leon zadorin, gcc-help

On 22 August 2016 at 09:58, lhmouse wrote:
> Unreproducible on 6.1.0 targeting either i686 or x86_64.

But it does fail on trunk, as he said.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: GCC ICE bug with segfault...
  2016-08-22  8:58 ` lhmouse
  2016-08-22  9:14   ` Jonathan Wakely
@ 2016-08-22 13:24   ` leon zadorin
  2016-08-22 13:54     ` lhmouse
  1 sibling, 1 reply; 12+ messages in thread
From: leon zadorin @ 2016-08-22 13:24 UTC (permalink / raw)
  To: gcc-help

On Mon, Aug 22, 2016 at 6:58 PM, lhmouse <lh_mouse@126.com> wrote:
> Unreproducible on 6.1.0 targeting either i686 or x86_64.

Thanks for testing on 6.1.0 :)
Just out of curiosity, which host/target triplet your gcc is
configured for and what are the rest of its "configured with" options?
I'm building mine on Windows 7 as x86_64-w64-mingw32 (I'll also try
with recently released 6.2, but just so that I can cross-reference my
config parameters with yours when I build 6.1/6.2/trunk it'd be good
to know your config params/etc).

> In order to make a *minimal* testcase, please remove unrelated stuff,
> such as redundant  `#include`s. For example, you can run
> `g++ -E -o foo.cc` to get a preprocessed source file then
> cut unrelated code off.

Sounds good -- thanks for the advise!

Kind regarsd
Leon.

> ------------------
> Best regards,
> lh_mouse
> 2016-08-22
>
> -------------------------------------------------------------
> 发件人:leon zadorin <leonleon77@gmail.com>
> 发送日期:2016-08-22 16:47
> 收件人:gcc-help
> 抄送:
> 主题:GCC ICE bug with segfault...
>
> Hello,
>
> I am not sure whether I can report a bug without an account in
> bugzilla (account creation temporarily disabled on that site)
>
> ... so I am posting this here for the time being
>
> GCC (trunk, rev 239646 -- but likely with earlier versions also, I
> haven't had the chance to test those yet) appears to ICE with
> segmentation fault given the following code (validity of which aside
> for the moment):
>
> #include <stdlib.h>
> #include <string.h>
>
> struct Blah {
>     char * a;
> };
>
> template <typename T>
> void Test(T & Obj) {
>     auto && a(Obj.a);
>     a = (char*)::malloc(1024 * 1024);
>     ::memset(a + 28, 'X', 6);
> }
>
> int main() {
>     Blah d;
>     Test(d);
>   return 0;
> }
>
> When compiled as
> c++  -Wall main.c++
>
> Causes GCC itself to crash hard:
>
> main.c++: In function 'void Test(T&)':
> main.c++:12:25: internal compiler error: Segmentation fault
>   ::memset(a + 28, 'X', 6);
>
>
> Whereas dropping -Wall prevents compiler from crashing.
> Taking out the 'template' nature from the above code also allows
> compiler not to crash (even with -Wall being used). Similar
> (non-crash) outcome is if one simply takes out "+ 28" offset from the
> code...
>
> Target: x86_64-w64-mingw32
> Configured with: ../gcc-trunk/configure --enable-checking=release
> --disable-werror --disable-multilib --host=x86_64-w64-mingw32 --build
> =x86_64-w64-mingw32 --target=x86_64-w64-mingw32
> --prefix=/C/YYYYY/installed --enable-lto --program-prefix=
> --enable-langu
> ages=c,c++,lto --disable-nls --disable-libgcj --enable-threads=posix
> --enable-seh-exceptions --enable-graphite
> --with-sysroot=/C/YYYYY/installed
> Thread model: posix
> gcc version 7.0.0 20160822 (experimental) (GCC)
>
> Perhaps it is something silly I have done with my GCC build, I will
> try to retest with the released version 6.0 on mingw 64 target soon
> also.
>
> Best regards
> leon.
>
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re:  Re: GCC ICE bug with segfault...
  2016-08-22 13:24   ` leon zadorin
@ 2016-08-22 13:54     ` lhmouse
  2016-08-23  0:24       ` leon zadorin
  0 siblings, 1 reply; 12+ messages in thread
From: lhmouse @ 2016-08-22 13:54 UTC (permalink / raw)
  To: leon zadorin, gcc-help

Got 6.2 and tried it. No ICE.
Perhaps the bug occurs on trunk only. That is also why
I don't build development versions.



E:\Desktop>g++ -v                                                                                                                                                                                       Using built-in specs.                                                                                                                                                                                   COLLECT_GCC=g++                                                                                                                                                                                         COLLECT_LTO_WRAPPER=C:/MinGW/MSYS2/mingw64/lib/gcc/x86_64-w64-mingw32/6.2.1/lto-wrapper.exe                                                                                                             Target: x86_64-w64-mingw32                                                                                                                                                                              Configured with: ../gcc/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++ --enable-shared --enable-static --enable-libatomic --enable-threads=mcf --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib --enable-checking=release --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='gcc-6-branch HEAD with MCF thread model, built by LH_Mouse.' --with-bugurl=http://github.lhmouse.com/ --with-gnu-as --with-gnu-ld --disable-tls                                                                                                                                                                                      Thread model: mcf                                                                                                                                                                                       gcc version 6.2.1 20160822 (gcc-6-branch HEAD with MCF thread model, built by LH_Mouse.)  
    
                                                                                                          
------------------				 
Best regards,
lh_mouse
2016-08-22

-------------------------------------------------------------
发件人:leon zadorin <leonleon77@gmail.com>
发送日期:2016-08-22 21:24
收件人:gcc-help
抄送:
主题:Re: GCC ICE bug with segfault...

On Mon, Aug 22, 2016 at 6:58 PM, lhmouse <lh_mouse@126.com> wrote:
> Unreproducible on 6.1.0 targeting either i686 or x86_64.

Thanks for testing on 6.1.0 :)
Just out of curiosity, which host/target triplet your gcc is
configured for and what are the rest of its "configured with" options?
I'm building mine on Windows 7 as x86_64-w64-mingw32 (I'll also try
with recently released 6.2, but just so that I can cross-reference my
config parameters with yours when I build 6.1/6.2/trunk it'd be good
to know your config params/etc).

> In order to make a *minimal* testcase, please remove unrelated stuff,
> such as redundant  `#include`s. For example, you can run
> `g++ -E -o foo.cc` to get a preprocessed source file then
> cut unrelated code off.

Sounds good -- thanks for the advise!

Kind regarsd
Leon.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: GCC ICE bug with segfault...
  2016-08-22  8:47 GCC ICE bug with segfault leon zadorin
  2016-08-22  8:58 ` lhmouse
  2016-08-22  9:12 ` Jonathan Wakely
@ 2016-08-22 14:58 ` Markus Trippelsdorf
  2016-08-23  0:26   ` leon zadorin
  2 siblings, 1 reply; 12+ messages in thread
From: Markus Trippelsdorf @ 2016-08-22 14:58 UTC (permalink / raw)
  To: leon zadorin; +Cc: gcc-help

On 2016.08.22 at 18:47 +1000, leon zadorin wrote:
> Hello,
> 
> I am not sure whether I can report a bug without an account in
> bugzilla (account creation temporarily disabled on that site)
> 
> ... so I am posting this here for the time being
> 
> GCC (trunk, rev 239646 -- but likely with earlier versions also, I
> haven't had the chance to test those yet) appears to ICE with
> segmentation fault given the following code (validity of which aside
> for the moment):
> 
> #include <stdlib.h>
> #include <string.h>
> 
> struct Blah {
>     char * a;
> };
> 
> template <typename T>
> void Test(T & Obj) {
>     auto && a(Obj.a);
>     a = (char*)::malloc(1024 * 1024);
>     ::memset(a + 28, 'X', 6);
> }
> 
> int main() {
>     Blah d;
>     Test(d);
>   return 0;
> }
> 
> When compiled as
> c++  -Wall main.c++
> 
> Causes GCC itself to crash hard:
> 
> main.c++: In function 'void Test(T&)':
> main.c++:12:25: internal compiler error: Segmentation fault
>   ::memset(a + 28, 'X', 6);

Thanks.
I've opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77321.

-- 
Markus

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Re: GCC ICE bug with segfault...
  2016-08-22 13:54     ` lhmouse
@ 2016-08-23  0:24       ` leon zadorin
  2016-08-23  1:06         ` leon zadorin
  0 siblings, 1 reply; 12+ messages in thread
From: leon zadorin @ 2016-08-23  0:24 UTC (permalink / raw)
  To: gcc-help

On Mon, Aug 22, 2016 at 11:54 PM, lhmouse <lh_mouse@126.com> wrote:
> Got 6.2 and tried it. No ICE.
> Perhaps the bug occurs on trunk only.

Ah yes -- I think I recall now (just rebuilt 6.1 on my end, no ICE for
the reported -Wall bug). I was having unrelated issues with 6.1 (from
distant memory, if using precompiled header, c++ compiler would exit
early and silently when building the final exe). I was going to
experiment with things like -Wall, -Winvalid-pch, -v, -H options,
anonymous spaces, etc. and also to see whether the trunk had exhibited
the same problem for me (presumption being that there is a bug in my
code or my gcc build which triggers the observed behavior)... and then
I hit the -Wall bug on trunk and by the time I had found a moment to
reduce the test case I had forgotten that -Wall wasn't necessarily
buggy in 6.1 etal :) mea culpa :)

> That is also why
> I don't build development versions.

I agree... well, mostly for the production runs... for other cases I'm
not against it (the more play the trunk receives the more chances for
the bugs to be discovered and ironed out earlier :) ... presuming one
has the time of course :)

> E:\Desktop>g++ -v                                                                                                                                                                           [...]
>                 Thread model: mcf
[...]

Interesting, thanks! Learned something new today -- the mcf threading
model :) I'll read up on it :)

>
>
> ------------------
> Best regards,
> lh_mouse
> 2016-08-22
>
> -------------------------------------------------------------
> 发件人:leon zadorin <leonleon77@gmail.com>
> 发送日期:2016-08-22 21:24
> 收件人:gcc-help
> 抄送:
> 主题:Re: GCC ICE bug with segfault...
>
> On Mon, Aug 22, 2016 at 6:58 PM, lhmouse <lh_mouse@126.com> wrote:
>> Unreproducible on 6.1.0 targeting either i686 or x86_64.
>
> Thanks for testing on 6.1.0 :)
> Just out of curiosity, which host/target triplet your gcc is
> configured for and what are the rest of its "configured with" options?
> I'm building mine on Windows 7 as x86_64-w64-mingw32 (I'll also try
> with recently released 6.2, but just so that I can cross-reference my
> config parameters with yours when I build 6.1/6.2/trunk it'd be good
> to know your config params/etc).
>
>> In order to make a *minimal* testcase, please remove unrelated stuff,
>> such as redundant  `#include`s. For example, you can run
>> `g++ -E -o foo.cc` to get a preprocessed source file then
>> cut unrelated code off.
>
> Sounds good -- thanks for the advise!
>
> Kind regarsd
> Leon.
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: GCC ICE bug with segfault...
  2016-08-22 14:58 ` Markus Trippelsdorf
@ 2016-08-23  0:26   ` leon zadorin
  0 siblings, 0 replies; 12+ messages in thread
From: leon zadorin @ 2016-08-23  0:26 UTC (permalink / raw)
  To: gcc-help

On Tue, Aug 23, 2016 at 12:58 AM, Markus Trippelsdorf
<markus@trippelsdorf.de> wrote:
>> main.c++: In function 'void Test(T&)':
>> main.c++:12:25: internal compiler error: Segmentation fault
>>   ::memset(a + 28, 'X', 6);
>
> Thanks.
> I've opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77321.

That's great, thanks! I see the patch has bee done already :) Awesome :)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Re: GCC ICE bug with segfault...
  2016-08-23  0:24       ` leon zadorin
@ 2016-08-23  1:06         ` leon zadorin
  2016-08-23  3:29           ` lhmouse
  0 siblings, 1 reply; 12+ messages in thread
From: leon zadorin @ 2016-08-23  1:06 UTC (permalink / raw)
  To: gcc-help

On Tue, Aug 23, 2016 at 10:24 AM, leon zadorin <leonleon77@gmail.com> wrote:
> On Mon, Aug 22, 2016 at 11:54 PM, lhmouse <lh_mouse@126.com> wrote:
>> Got 6.2 and tried it. No ICE.
>> Perhaps the bug occurs on trunk only.
>
> Ah yes -- I think I recall now (just rebuilt 6.1 on my end, no ICE for
> the reported -Wall bug). I was having unrelated issues with 6.1 (from
> distant memory, if using precompiled header, c++ compiler would exit
> early and silently when building the final exe). I was going to
> experiment with things like -Wall, -Winvalid-pch, -v, -H options,

Ha, all good :) host-mingw32.c has limit pch_VA_max_size = 128 * 1024 * 1024
whereas my precomp header is about 400MB (I've forgotten about this
when downloading 6.1 sources), changing this limit helps indeed :)
sorry for the noise as usual :)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re:  Re: Re: GCC ICE bug with segfault...
  2016-08-23  1:06         ` leon zadorin
@ 2016-08-23  3:29           ` lhmouse
  2016-08-23  7:34             ` leon zadorin
  0 siblings, 1 reply; 12+ messages in thread
From: lhmouse @ 2016-08-23  3:29 UTC (permalink / raw)
  To: leon zadorin, gcc-help

Well you should really have said you were using the PCH
because it is a known issue and a patch is available at
https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-gcc-git/0010-Fix-using-large-PCH.patch .

------------------				 
Best regards,
lh_mouse
2016-08-23

-------------------------------------------------------------
发件人:leon zadorin <leonleon77@gmail.com>
发送日期:2016-08-23 09:06
收件人:gcc-help
抄送:
主题:Re: Re: GCC ICE bug with segfault...

On Tue, Aug 23, 2016 at 10:24 AM, leon zadorin <leonleon77@gmail.com> wrote:
> On Mon, Aug 22, 2016 at 11:54 PM, lhmouse <lh_mouse@126.com> wrote:
>> Got 6.2 and tried it. No ICE.
>> Perhaps the bug occurs on trunk only.
>
> Ah yes -- I think I recall now (just rebuilt 6.1 on my end, no ICE for
> the reported -Wall bug). I was having unrelated issues with 6.1 (from
> distant memory, if using precompiled header, c++ compiler would exit
> early and silently when building the final exe). I was going to
> experiment with things like -Wall, -Winvalid-pch, -v, -H options,

Ha, all good :) host-mingw32.c has limit pch_VA_max_size = 128 * 1024 * 1024
whereas my precomp header is about 400MB (I've forgotten about this
when downloading 6.1 sources), changing this limit helps indeed :)
sorry for the noise as usual :)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: Re: Re: GCC ICE bug with segfault...
  2016-08-23  3:29           ` lhmouse
@ 2016-08-23  7:34             ` leon zadorin
  0 siblings, 0 replies; 12+ messages in thread
From: leon zadorin @ 2016-08-23  7:34 UTC (permalink / raw)
  To: gcc-help

On Tue, Aug 23, 2016 at 1:29 PM, lhmouse <lh_mouse@126.com> wrote:
> Well you should really have said you were using the PCH

Sure -- I would-really-have/should-really-have, had I remembered it.
Like I said -- forgot when side-tracked in test-reduction for -Wall
bug on trunk... (well, that and other stuff -- distant memory is just
that, a distant memory :) I only get to do this very intermittently ).

> because it is a known issue and a patch is available at
> https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-gcc-git/0010-Fix-using-large-PCH.patch .

Thanks for the link... will consider it.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-08-23  7:34 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-22  8:47 GCC ICE bug with segfault leon zadorin
2016-08-22  8:58 ` lhmouse
2016-08-22  9:14   ` Jonathan Wakely
2016-08-22 13:24   ` leon zadorin
2016-08-22 13:54     ` lhmouse
2016-08-23  0:24       ` leon zadorin
2016-08-23  1:06         ` leon zadorin
2016-08-23  3:29           ` lhmouse
2016-08-23  7:34             ` leon zadorin
2016-08-22  9:12 ` Jonathan Wakely
2016-08-22 14:58 ` Markus Trippelsdorf
2016-08-23  0:26   ` leon zadorin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).