Re: BUG #18334: Segfault when running a query with parallel workers - Mailing list pgsql-bugs

From Marcin Barczyński
Subject Re: BUG #18334: Segfault when running a query with parallel workers
Date
Msg-id CAP3o3PdwOyJf7pKi2mveCUX0G2HtADDbnhqcyEPMTcZwP3HRoQ@mail.gmail.com
Whole thread Raw
In response to Re: BUG #18334: Segfault when running a query with parallel workers  (Marcin Barczyński <mba.ogolny@gmail.com>)
Responses Re: BUG #18334: Segfault when running a query with parallel workers
List pgsql-bugs
Hello!

If it would make things easier, I can share the core dump.

On Fri, May 24, 2024 at 10:26 AM Marcin Barczyński <mba.ogolny@gmail.com> wrote:
>
> Thank you for looking into this.
>
> On Fri, May 24, 2024 at 3:33 AM Thomas Munro <thomas.munro@gmail.com> wrote:
> > What does segment_map->segment->mapped_size show?
>
> (gdb) print *(segment_map->segment)
> $3 = {node = {prev = 0x56134ee11fa8, next = 0x56134dfa2258}, resowner
> = 0x56134df98a98, handle = 2051931009, control_slot = 30, impl_private
> = 0x0, mapped_address = 0x7f309faf4000,
>   mapped_size = 806887424, on_detach = {head = {next = 0x0}}}
>
> > The actual dsa_pointer has been optimised out but
> > should be visible from frame #1 as batch->chunks.
>
> (gdb) frame 1
> (gdb) print *batch
> $4 = {buckets = 0, batch_barrier = {mutex = 0 '\000', phase = 0,
> participants = 0, arrived = 0, elected = 0, static_party = false,
> condition_variable = {mutex = 0 '\000', wakeup = {head = 0,
>         tail = 0}}}, chunks = 0, size = 0, estimated_size = 0, ntuples
> = 0, old_ntuples = 0, space_exhausted = false}
>
> > What CPU architecture is this?
>
> x64, AMD EPYC 9374F
>
> > ... but if I'm missing something there, it might be a clue visible
> > from gdb if area->control->freed_segment_counter (the one in shared
> > memory) and area->freed_segment_counter (the one in this backend) have
> > different values, if your core captured the segments.
>
> (gdb) p *area->control
> $1 = {segment_header = {magic = 0, usable_pages = 0, size = 0, prev =
> 0, next = 0, bin = 0, freed = false}, handle = 0, segment_handles = {0
> <repeats 1024 times>}, segment_bins = {
>     0 <repeats 16 times>}, pools = {{lock = {tranche = 0, state =
> {value = 0}, waiters = {head = 0, tail = 0}}, spans = {0, 0, 0, 0}}
> <repeats 38 times>}, total_segment_size = 0,
>   max_total_segment_size = 0, high_segment_index = 0, refcnt = 0,
> pinned = false, freed_segment_counter = 0, lwlock_tranche_id = 0, lock
> = {tranche = 0, state = {value = 0}, waiters = {head = 0,
>       tail = 0}}}
>
> (gdb) p *area
> $2 = {control = 0x7f321dfa4500, mapping_pinned = false, segment_maps =
> {{segment = 0x0, mapped_address = 0x7f321dfa4500 "", header =
> 0x7f321dfa4500, fpm = 0x7f321dfa5d20,
>       pagemap = 0x7f321dfa6168}, {segment = 0x56134dfa1ec8,
> mapped_address = 0x7f3216cd8000 "", header = 0x7f3216cd8000, fpm =
> 0x7f3216cd8038, pagemap = 0x7f3216cd8480}, {
>       segment = 0x56134dfa1f18, mapped_address = 0x7f31f6bd7000 "",
> header = 0x7f31f6bd7000, fpm = 0x7f31f6bd7038, pagemap =
> 0x7f31f6bd7480}, {segment = 0x56134dfa2078,
>       mapped_address = 0x7f30d60a6000 "", header = 0x7f30d60a6000, fpm
> = 0x7f30d60a6038, pagemap = 0x7f30d60a6480}, {segment =
> 0x56134dfa2118, mapped_address = 0x7f30d58a6000 "",
>       header = 0x7f30d58a6000, fpm = 0x7f30d58a6038, pagemap =
> 0x7f30d58a6480}, {segment = 0x56134dfa20c8, mapped_address =
> 0x7f30d5ca6000 "", header = 0x7f30d5ca6000, fpm = 0x7f30d5ca6038,
>       pagemap = 0x7f30d5ca6480}, {segment = 0x56134dfa2168,
> mapped_address = 0x7f30d50a6000 "", header = 0x7f30d50a6000, fpm =
> 0x7f30d50a6038, pagemap = 0x7f30d50a6480}, {
>       segment = 0x56134dfa21b8, mapped_address = 0x7f30d449e000 "",
> header = 0x7f30d449e000, fpm = 0x7f30d449e038, pagemap =
> 0x7f30d449e480}, {segment = 0x56134dfa2208,
>       mapped_address = 0x7f30d2c90000 "", header = 0x7f30d2c90000, fpm
> = 0x7f30d2c90038, pagemap = 0x7f30d2c90480}, {segment =
> 0x56134dfa2258, mapped_address = 0x7f30cfc76000 "",
>       header = 0x7f30cfc76000, fpm = 0x7f30cfc76038, pagemap =
> 0x7f30cfc76480}, {segment = 0x56134ee12048, mapped_address =
> 0x7f307599e000 "", header = 0x7f307599e000, fpm = 0x7f307599e038,
>       pagemap = 0x7f307599e480}, {segment = 0x56134ee11ff8,
> mapped_address = 0x7f307b9d0000 "", header = 0x7f307b9d0000, fpm =
> 0x7f307b9d0038, pagemap = 0x7f307b9d0480}, {
>       segment = 0x56134ee11fa8, mapped_address = 0x7f3087a32000 "",
> header = 0x7f3087a32000, fpm = 0x7f3087a32038, pagemap =
> 0x7f3087a32480}, {segment = 0x56134dfa2dd8,
>       mapped_address = 0x7f309faf4000 "", header = 0x7f309faf4000, fpm
> = 0x7f309faf4038, pagemap = 0x7f309faf4480}, {segment =
> 0x56134dfa1fb8, mapped_address = 0x7f30d62d3000 "",
>       header = 0x7f30d62d3000, fpm = 0x7f30d62d3038, pagemap =
> 0x7f30d62d3480}, {segment = 0x56134dfa1f68, mapped_address =
> 0x7f31365d5000 "", header = 0x7f31365d5000, fpm = 0x7f31365d5038,
>       pagemap = 0x7f31365d5480}, {segment = 0x56134ee12098,
> mapped_address = 0x7f306599e000 "", header = 0x7f306599e000, fpm =
> 0x7f306599e038, pagemap = 0x7f306599e480}, {
>       segment = 0x56134ee120e8, mapped_address = 0x7f305599e000 "",
> header = 0x7f305599e000, fpm = 0x7f305599e038, pagemap =
> 0x7f305599e480}, {segment = 0x56134ee12138,
>       mapped_address = 0x7f303599e000 "", header = 0x7f303599e000, fpm
> = 0x7f303599e038, pagemap = 0x7f303599e480}, {segment =
> 0x56134ee12188, mapped_address = 0x7f301599e000 "",
>       header = 0x7f301599e000, fpm = 0x7f301599e038, pagemap =
> 0x7f301599e480}, {segment = 0x56134ee121d8, mapped_address =
> 0x7f2fd599e000 "", header = 0x7f2fd599e000, fpm = 0x7f2fd599e038,
>       pagemap = 0x7f2fd599e480}, {segment = 0x56134ee12228,
> mapped_address = 0x7f2f9599e000 "", header = 0x7f2f9599e000, fpm =
> 0x7f2f9599e038, pagemap = 0x7f2f9599e480}, {
>       segment = 0x56134ee12278, mapped_address = 0x7f2f1599e000 "",
> header = 0x7f2f1599e000, fpm = 0x7f2f1599e038, pagemap =
> 0x7f2f1599e480}, {segment = 0x56134ee122c8,
>       mapped_address = 0x7f2e9599e000 "", header = 0x7f2e9599e000, fpm
> = 0x7f2e9599e038, pagemap = 0x7f2e9599e480}, {segment = 0x0,
> mapped_address = 0x0, header = 0x0, fpm = 0x0,
>       pagemap = 0x0} <repeats 1000 times>}, high_segment_index = 23,
> freed_segment_counter = 0}
>
>
> I hope this sheds some light on the issue.
>
> Best regards,
> Marcin Barczyński



pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #18487: libpq: Race condition in PQsetdbLogin/emitHostIdentityInfo/libpq_gettext
Next
From: David Rowley
Date:
Subject: Re: BUG #18484: "Cannot enlarge string buffer" during parallel execution of prepared statement/partitioning