Page 1 of 2 12 LastLast
Results 1 to 10 of 18

Thread: Ping segmentation fault

  1. #1

    Default Ping segmentation fault

    When I invoke ping, I get a segmentation fault.

    Thinking I may have a corrupt file, i extracted ping from the original DVD to my home directory, and ran cmp .ping /usr/bin/ping, which revealed no differences.
    In addition their sha256 sums.are identical: b522312c65762eef62b868ddf23cee59bc6318b1f05d770770085cdf6db43cba

    This is where it gets interesting. When I run the local copy of ping it works perfectly.
    So, I renamed /usr/bin/ping to /usr/bin/ping.org and copied ping from my home directory to /usr/bin.

    Surprisingly, ping.org now ran properly, but the new copy failed with a segmentation fault!!
    I renamed the new copy to ping.new. It worked correctly.

    At this point I have /usr/bin/ping.org and usr/bin/ping.new, both working correctly, but if either is renamed to /usr/bin/ping it fails.

    To confirm it was the name that was significant, I renamed /usr/bin/ls to /usr/bin/ping. When run it failed with a segmentation fault.
    Renamed it back to /usr/bin/ls and checked that it worked as it should.

    It seems that, on my system at least, any executable named /usr/bin/ping will generate a segmentation fault.

    Can anyone please confirm whether this fault is reproducible on any other system, and also that the sha256 sum matches.

    I suspect it may be a file system error, but would like to confirm that it is local and not a bug.
    Go placidly amidst the noise and haste, and remember what peace there may be in silence.

  2. #2
    Join Date
    Jun 2008
    Location
    Podunk
    Posts
    26,670
    Blog Entries
    15

    Default Re: Ping segmentation fault

    Hi
    Works fine here....
    Code:
    sha256sum /usr/bin/ping
    b522312c65762eef62b868ddf23cee59bc6318b1f05d770770085cdf6db43cba  /usr/bin/ping
    
    ls -lah /usr/bin/ping
    -rwxr-xr-x 1 root root 39K Oct  7  2016 /usr/bin/ping
    Was this an upgrade or fresh install?
    Code:
    zypper if iputils
    zypper in -f iputils
    Cheers Malcolm °¿° SUSE Knowledge Partner (Linux Counter #276890)
    SUSE SLE, openSUSE Leap/Tumbleweed (x86_64) | GNOME DE
    If you find this post helpful and are logged into the web interface,
    please show your appreciation and click on the star below... Thanks!

  3. #3

    Default Re: Ping segmentation fault

    It may help to include a lot more history of the system too, such as
    whether or not something like AppArmor or SELinux is installed, or if
    there are unusual libraries on the system (shouldn't matter since this is
    all based on the name) or maybe some really odd firewall technology that
    checks executables doing something by their name.

    Maybe hook up strace for the two attempts (working vs. broken) and see
    what is different there.

    Code:
    sudo /usr/bin/strace -ttt -ff -s 499 -n /usr/bin/ping 8.8.8.8
    sudo /usr/bin/strace -ttt -ff -s 499 -n /usr/bin/ping.org 8.8.8.8
    --
    Good luck.

    If you find this post helpful and are logged into the web interface,
    show your appreciation and click on the star below.

    If you want to send me a private message, please let me know in the
    forum as I do not use the web interface often.

  4. #4
    Join Date
    Jun 2008
    Location
    Groningen, Netherlands
    Posts
    19,803
    Blog Entries
    14

    Default Re: Ping segmentation fault

    Quote Originally Posted by oakhillj View Post
    I suspect it may be a file system error, but would like to confirm that it is local and not a bug.
    I don't see this either. But, to rule out filesystem errors, copy the file from the DVD iso to ~/bin, then run it.
    ° Appreciate my reply? Click the star and let me know why.

    ° Perfection is not gonna happen. No way.

    https://en.opensuse.org/openSUSE:Board#Members
    http://en.opensuse.org/User:Knurpht
    http://nl.opensuse.org/Gebruiker:Knurpht

  5. #5
    Join Date
    Jul 2008
    Location
    Seattle, WA
    Posts
    17,050

    Default Re: Ping segmentation fault

    What's the output of the 'alias' command?

    Jim
    --
    Jim Henderson
    openSUSE Forums Administrator
    Forum Use Terms & Conditions at http://tinyurl.com/openSUSE-T-C

  6. #6
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    25,002

    Default Re: Ping segmentation fault

    Quote Originally Posted by hendersj View Post
    What's the output of the 'alias' command?

    Jim
    --
    Jim Henderson
    openSUSE Forums Administrator
    Forum Use Terms & Conditions at http://tinyurl.com/openSUSE-T-C
    I was just thinking along the same lines. Related to that possibility is to check if there is no ping file anywhere else in the elements of the PATH environment variable.
    Henk van Velden

  7. #7
    Join Date
    Jul 2008
    Location
    Seattle, WA
    Posts
    17,050

    Default Re: Ping segmentation fault

    On Mon, 19 Jun 2017 17:56:01 +0000, hcvv wrote:

    > hendersj;2826951 Wrote:
    >> What's the output of the 'alias' command?
    >>
    >> Jim --
    >> Jim Henderson openSUSE Forums Administrator Forum Use Terms &
    >> Conditions at http://tinyurl.com/openSUSE-T-C

    > I was just thinking along the same lines. Related to that possibility is
    > to check if there is no ping file anywhere else in the elements of the
    > PATH environment variable.


    Good catch - I hadn't thought that myself, but 'which ping' would be a
    useful result to see as well.

    Jim



    --
    Jim Henderson
    openSUSE Forums Administrator
    Forum Use Terms & Conditions at http://tinyurl.com/openSUSE-T-C

  8. #8

    Default Re: Ping segmentation fault

    Thank you all for your help. I'll have to split my post into two parts because of the length of the code quoted.
    I should mention that I always used the full pathname command to avoid issues with the path..

    Part 1

    zypper if iputils
    Code:
    john@linux-o9hg:~> zypper if iputils
    Loading repository data...
    Reading installed packages...
    
    
    Information for package iputils:
    --------------------------------
    Repository     : Main Repository (OSS)             
    Name           : iputils                           
    Version        : s20121221-4.6                     
    Arch           : x86_64                            
    Vendor         : openSUSE                          
    Installed Size : 236.4 KiB                         
    Installed      : Yes                               
    Status         : up-to-date                        
    Source package : iputils-s20121221-4.6.src         
    Summary        : IPv4 and IPv6 Networking Utilities
    Description    :                                   
        This package contains some small network tools for IPv4 and IPv6 like
        rdisc, ping6, traceroute6, tracepath, and tracepath6.
    
    john@linux-o9hg:~>

    zypper in -f iputils
    Code:
    linux-o9hg:~ # zypper in -f iputils
    Loading repository data...
    Reading installed packages...
    Forcing installation of 'iputils-s20121221-4.6.x86_64' from repository 'Main Repository (OSS)'.
    Resolving package dependencies...
    
    The following package is going to be reinstalled:
      iputils
    
    1 package to reinstall.
    Overall download size: 89.6 KiB. Already cached: 0 B. No additional space will be used or freed after the
    operation.
    Continue? [y/n/...? shows all options] (y): y
    Retrieving package iputils-s20121221-4.6.x86_64                              (1/1),  89.6 KiB (236.4 KiB unpacked)
    Retrieving: iputils-s20121221-4.6.x86_64.rpm ...................................................[done (1.1 KiB/s)]
    Checking for file conflicts: ...............................................................................[done]
    (1/1) Installing: iputils-s20121221-4.6.x86_64 .............................................................[done]
    Additional rpm output:
    setting /usr/bin/ping to root:root 0755 "= cap_net_raw+ep". (wrong permissions 4755, missing capabilities)
    setting /usr/bin/ping6 to root:root 0755 "= cap_net_raw+ep". (wrong permissions 4755, missing capabilities)
    
    
    linux-o9hg:~ #

    The output of alias is:
    Code:
    john@linux-o9hg:~> alias
    alias +='pushd .'
    alias -='popd'
    alias ..='cd ..'
    alias ...='cd ../..'
    alias beep='echo -en "\007"'
    alias cd..='cd ..'
    alias dir='ls -l'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l='ls -alF'
    alias la='ls -la'
    alias ll='ls -l'
    alias ls='_ls'
    alias ls-l='ls -l'
    alias md='mkdir -p'
    alias o='less'
    alias rd='rmdir'
    alias rehash='hash -r'
    alias unmount='echo "Error: Try the command: umount" 1>&2; false'
    alias you='if test "$EUID" = 0 ; then /sbin/yast2 online_update ; else su - -c "/sbin/yast2 online_update" ; fi'
    john@linux-o9hg:~>
    Go placidly amidst the noise and haste, and remember what peace there may be in silence.

  9. #9

    Default Re: Ping segmentation fault

    Part 2
    I'm going to need a part 3 as well

    My first attempt at running strace failed because it didn't recognise the -n option. After a little reading I ran it as follows.for /usr/bin/ping
    Code:
    john@linux-o9hg:~> sudo /usr/bin/strace -ff -s 499  /usr/bin/ping -c1 8.8.8.8  
    root's password:
    execve("/usr/bin/ping", ["/usr/bin/ping", "-c1", "8.8.8.8"], [/* 16 vars */]) = 0
    brk(0)                                  = 0x556bfebf7000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0347a76000
    access("/etc/ld.so.preload", R_OK)      = 0
    open("/etc/ld.so.preload", O_RDONLY|O_CLOEXEC) = 3
    fstat(3, {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
    mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x7f0347a75000
    close(3)                                = 0
    readlink("/proc/self/exe", "/usr/bin/ping", 4096) = 13
    open("/lib/lib64/liblsp.so", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\22\0\0\0\0\0\0@\0\0\0\0\0\0\0\320B\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0\34\0\33\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t4\0\0\0\0\0\0t4\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\260=\0\0\0\0\0\0\260= \0\0\0\0\0\260= \0\0\0\0\0\0\4\0\0\0\0\0\0X\5\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\350=\0\0\0\0\0\0\350= \0\0\0\0\0\350= \0\0\0\0\0\340\1\0\0\0\0\0\0\340\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\3440\0\0\0\0\0\0\3440\0\0\0\0\0\0\3440\0\0\0\0\0\0\264\0\0\0\0\0\0\0\264\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0R\345td\4\0\0\0\260=\0\0\0\0\0\0\260= \0\0\0\0\0\260= \0\0\0\0\0P\2\0\0\0\0\0\0P\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0Z\365&\1\327\326^QQ\243\212\33cJ\365*\2\344\16i\0\0\0\0\3\0\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=18896, ...}) = 0
    mmap(NULL, 2114312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f0347652000
    mprotect(0x7f0347656000, 2093056, PROT_NONE) = 0
    mmap(0x7f0347855000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f0347855000
    close(3)                                = 0
    munmap(0x7f0347a75000, 20)              = 0
    open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
    fstat(3, {st_mode=S_IFREG|0644, st_size=176590, ...}) = 0
    mmap(NULL, 176590, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f0347a4a000
    close(3)                                = 0
    open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\27\0\0\0\0\0\0@\0\0\0\0\0\0\0PC\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0\34\0\33\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3048\0\0\0\0\0\0\3048\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\330=\0\0\0\0\0\0\330= \0\0\0\0\0\330= \0\0\0\0\0p\4\0\0\0\0\0\0x\4\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\360=\0\0\0\0\0\0\360= \0\0\0\0\0\360= \0\0\0\0\0\340\1\0\0\0\0\0\0\340\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0$\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\3101\0\0\0\0\0\0\3101\0\0\0\0\0\0\3101\0\0\0\0\0\0\24\1\0\0\0\0\0\0\24\1\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0\330=\0\0\0\0\0\0\330= \0\0\0\0\0\330= \0\0\0\0\0(\2\0\0\0\0\0\0(\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0g\224\260\345\203y/\35\24\370vUs\360\207\2468\37\252\246\0\0\0\0%\0\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=19024, ...}) = 0
    mmap(NULL, 2114128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f034744d000
    mprotect(0x7f0347451000, 2093056, PROT_NONE) = 0
    mmap(0x7f0347650000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f0347650000
    close(3)                                = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0347a49000
    open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\10\2\0\0\0\0\0@\0\0\0\0\0\0\0\240N\35\0\0\0\0\0\0\0\0\0@\0008\0\n\0@\0H\0E\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0000\2\0\0\0\0\0\0000\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\260\7\27\0\0\0\0\0\260\7\27\0\0\0\0\0\260\7\27\0\0\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\224\221\31\0\0\0\0\0\224\221\31\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\210\227\31\0\0\0\0\0\210\2279\0\0\0\0\0\210\2279\0\0\0\0\0`O\0\0\0\0\0\0\230\222\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0`\313\31\0\0\0\0\0`\3139\0\0\0\0\0`\3139\0\0\0\0\0\360\1\0\0\0\0\0\0\360\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0p\2\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0\7\0\0\0\4\0\0\0\210\227\31\0\0\0\0\0\210\2279\0\0\0\0\0\210\2279\0\0\0\0\0\20\0\0\0\0\0\0\0\200\0\0\0\0\0\0\0\10\0\0\0\0\0\0\0P\345td\4\0\0\0\314\7\27\0\0\0\0\0\314\7\27\0\0\0\0\0\314\7\27\0\0\0\0\0\264X\0\0\0\0\0\0\264X\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=1925280, ...}) = 0
    mmap(NULL, 3811872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f03470aa000
    mprotect(0x7f0347244000, 2093056, PROT_NONE) = 0
    mmap(0x7f0347443000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x199000) = 0x7f0347443000
    mmap(0x7f0347449000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f0347449000
    close(3)                                = 0
    open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\r\0\0\0\0\0\0@\0\0\0\0\0\0\0\30A\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0 \0\35\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\300\36\0\0\0\0\0\0\300\36\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0`-\0\0\0\0\0\0`- \0\0\0\0\0`- \0\0\0\0\0\20\3\0\0\0\0\0\0\220\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\210-\0\0\0\0\0\0\210- \0\0\0\0\0\210- \0\0\0\0\0\20\2\0\0\0\0\0\0\20\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0\0\0\0\0D\0\0\0\0\0\0\0D\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0P\345td\4\0\0\0\0\31\0\0\0\0\0\0\0\31\0\0\0\0\0\0\0\31\0\0\0\0\0\0\274\0\0\0\0\0\0\0\274\0\0\0\0\0\0\0\4\0\0\0\0\0\0\0Q\345td\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0R\345td\4\0\0\0`-\0\0\0\0\0\0`- \0\0\0\0\0`- \0\0\0\0\0\240\2\0\0\0\0\0\0\240\2\0\0\0\0\0\0\1\0\0\0\0\0\0\0\4\0\0\0\24\0\0\0\3\0\0\0GNU\0d\16\372\350[\232\301PPy\377\306\34\326J\267\244\267\20|\4\0\0\0\20\0\0"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=18712, ...}) = 0
    mmap(NULL, 2109680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f0346ea6000
    mprotect(0x7f0346ea8000, 2097152, PROT_NONE) = 0
    mmap(0x7f03470a8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f03470a8000
    close(3)                                = 0
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0347a48000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0347a47000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0347a46000
    arch_prctl(ARCH_SET_FS, 0x7f0347a47700) = 0
    mprotect(0x7f0347443000, 16384, PROT_READ) = 0
    mprotect(0x7f03470a8000, 4096, PROT_READ) = 0
    mprotect(0x7f0347650000, 4096, PROT_READ) = 0
    mprotect(0x7f0347855000, 4096, PROT_READ) = 0
    mprotect(0x556bfe6a0000, 4096, PROT_READ) = 0
    mprotect(0x7f0347a77000, 4096, PROT_READ) = 0
    munmap(0x7f0347a4a000, 176590)          = 0
    brk(0)                                  = 0x556bfebf7000
    brk(0x556bfec18000)                     = 0x556bfec18000
    open("/proc/self/cmdline", O_RDONLY)    = -1 EACCES (Permission denied)
    --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
    +++ killed by SIGSEGV (core dumped) +++
    john@linux-o9hg:~>
    Note the
    Code:
    open("/proc/self/cmdline", O_RDONLY)    = -1 EACCES (Permission denied)
    near the end.
    Go placidly amidst the noise and haste, and remember what peace there may be in silence.

  10. #10
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    25,002

    Default Re: Ping segmentation fault

    Ok, no alias. The other one was
    Code:
    which ping
    Henk van Velden

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •