PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
// Copyright 2012 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build unix package runtime_test import ( "bytes" "internal/testenv" "io" "os" "os/exec" "runtime" "runtime/debug" "strings" "sync" "syscall" "testing" "time" "unsafe" ) func init() { if runtime.Sigisblocked(int(syscall.SIGQUIT)) { // We can't use SIGQUIT to kill subprocesses because // it's blocked. Use SIGKILL instead. See issue // #19196 for an example of when this happens. testenv.Sigquit = syscall.SIGKILL } } func TestBadOpen(t *testing.T) { // make sure we get the correct error code if open fails. Same for // read/write/close on the resulting -1 fd. See issue 10052. nonfile := []byte("/notreallyafile") fd := runtime.Open(&nonfile[0], 0, 0) if fd != -1 { t.Errorf("open(%q)=%d, want -1", nonfile, fd) } var buf [32]byte r := runtime.Read(-1, unsafe.Pointer(&buf[0]), int32(len(buf))) if got, want := r, -int32(syscall.EBADF); got != want { t.Errorf("read()=%d, want %d", got, want) } w := runtime.Write(^uintptr(0), unsafe.Pointer(&buf[0]), int32(len(buf))) if got, want := w, -int32(syscall.EBADF); got != want { t.Errorf("write()=%d, want %d", got, want) } c := runtime.Close(-1) if c != -1 { t.Errorf("close()=%d, want -1", c) } } func TestCrashDumpsAllThreads(t *testing.T) { if *flagQuick { t.Skip("-quick") } switch runtime.GOOS { case "darwin", "dragonfly", "freebsd", "linux", "netbsd", "openbsd", "illumos", "solaris": default: t.Skipf("skipping; not supported on %v", runtime.GOOS) } if runtime.GOOS == "openbsd" && (runtime.GOARCH == "arm" || runtime.GOARCH == "mips64" || runtime.GOARCH == "ppc64") { // This may be ncpu < 2 related... t.Skipf("skipping; test fails on %s/%s - see issue #42464", runtime.GOOS, runtime.GOARCH) } if runtime.Sigisblocked(int(syscall.SIGQUIT)) { t.Skip("skipping; SIGQUIT is blocked, see golang.org/issue/19196") } testenv.MustHaveGoBuild(t) if strings.Contains(os.Getenv("GOFLAGS"), "mayMoreStackPreempt") { // This test occasionally times out in this debug mode. This is probably // revealing a real bug in the scheduler, but since it seems to only // affect this test and this is itself a test of a debug mode, it's not // a high priority. testenv.SkipFlaky(t, 55160) } exe, err := buildTestProg(t, "testprog") if err != nil { t.Fatal(err) } cmd := testenv.Command(t, exe, "CrashDumpsAllThreads") cmd = testenv.CleanCmdEnv(cmd) cmd.Dir = t.TempDir() // put any core file in tempdir cmd.Env = append(cmd.Env, "GOTRACEBACK=crash", // Set GOGC=off. Because of golang.org/issue/10958, the tight // loops in the test program are not preemptible. If GC kicks // in, it may lock up and prevent main from saying it's ready. "GOGC=off", // Set GODEBUG=asyncpreemptoff=1. If a thread is preempted // when it receives SIGQUIT, it won't show the expected // stack trace. See issue 35356. "GODEBUG=asyncpreemptoff=1", ) var outbuf bytes.Buffer cmd.Stdout = &outbuf cmd.Stderr = &outbuf rp, wp, err := os.Pipe() if err != nil { t.Fatal(err) } defer rp.Close() cmd.ExtraFiles = []*os.File{wp} if err := cmd.Start(); err != nil { wp.Close() t.Fatalf("starting program: %v", err) } if err := wp.Close(); err != nil { t.Logf("closing write pipe: %v", err) } if _, err := rp.Read(make([]byte, 1)); err != nil { t.Fatalf("reading from pipe: %v", err) } if err := cmd.Process.Signal(syscall.SIGQUIT); err != nil { t.Fatalf("signal: %v", err) } // No point in checking the error return from Wait--we expect // it to fail. cmd.Wait() // We want to see a stack trace for each thread. // Before https://golang.org/cl/2811 running threads would say // "goroutine running on other thread; stack unavailable". out := outbuf.Bytes() n := bytes.Count(out, []byte("main.crashDumpsAllThreadsLoop(")) if n != 4 { t.Errorf("found %d instances of main.crashDumpsAllThreadsLoop; expected 4", n) t.Logf("%s", out) } } func TestPanicSystemstack(t *testing.T) { // Test that GOTRACEBACK=crash prints both the system and user // stack of other threads. // The GOTRACEBACK=crash handler takes 0.1 seconds even if // it's not writing a core file and potentially much longer if // it is. Skip in short mode. if testing.Short() { t.Skip("Skipping in short mode (GOTRACEBACK=crash is slow)") } if runtime.Sigisblocked(int(syscall.SIGQUIT)) { t.Skip("skipping; SIGQUIT is blocked, see golang.org/issue/19196") } t.Parallel() cmd := exec.Command(os.Args[0], "testPanicSystemstackInternal") cmd = testenv.CleanCmdEnv(cmd) cmd.Dir = t.TempDir() // put any core file in tempdir cmd.Env = append(cmd.Env, "GOTRACEBACK=crash") pr, pw, err := os.Pipe() if err != nil { t.Fatal("creating pipe: ", err) } cmd.Stderr = pw if err := cmd.Start(); err != nil { t.Fatal("starting command: ", err) } defer cmd.Process.Wait() defer cmd.Process.Kill() if err := pw.Close(); err != nil { t.Log("closing write pipe: ", err) } defer pr.Close() // Wait for "x\nx\n" to indicate almost-readiness. buf := make([]byte, 4) _, err = io.ReadFull(pr, buf) if err != nil || string(buf) != "x\nx\n" { t.Fatal("subprocess failed; output:\n", string(buf)) } // The child blockers print "x\n" and then block on a lock. Receiving // those bytes only indicates that the child is _about to block_. Since // we don't have a way to know when it is fully blocked, sleep a bit to // make us less likely to lose the race and signal before the child // blocks. time.Sleep(100 * time.Millisecond) // Send SIGQUIT. if err := cmd.Process.Signal(syscall.SIGQUIT); err != nil { t.Fatal("signaling subprocess: ", err) } // Get traceback. tb, err := io.ReadAll(pr) if err != nil { t.Fatal("reading traceback from pipe: ", err) } // Traceback should have two testPanicSystemstackInternal's // and two blockOnSystemStackInternal's. userFunc := "testPanicSystemstackInternal" sysFunc := "blockOnSystemStackInternal" nUser := bytes.Count(tb, []byte(userFunc)) nSys := bytes.Count(tb, []byte(sysFunc)) if nUser != 2 || nSys != 2 { t.Fatalf("want %d user stack frames in %s and %d system stack frames in %s, got %d and %d:\n%s", 2, userFunc, 2, sysFunc, nUser, nSys, string(tb)) } // Traceback should not contain "unexpected SPWRITE" when // unwinding the system stacks. if bytes.Contains(tb, []byte("unexpected SPWRITE")) { t.Errorf("unexpected \"unexpected SPWRITE\" in traceback:\n%s", tb) } } func init() { if len(os.Args) >= 2 && os.Args[1] == "testPanicSystemstackInternal" { // Complete any in-flight GCs and disable future ones. We're going to // block goroutines on runtime locks, which aren't ever preemptible for the // GC to scan them. runtime.GC() debug.SetGCPercent(-1) // Get two threads running on the system stack with // something recognizable in the stack trace. runtime.GOMAXPROCS(2) go testPanicSystemstackInternal() testPanicSystemstackInternal() } } func testPanicSystemstackInternal() { runtime.BlockOnSystemStack() os.Exit(1) // Should be unreachable. } func TestSignalExitStatus(t *testing.T) { testenv.MustHaveGoBuild(t) exe, err := buildTestProg(t, "testprog") if err != nil { t.Fatal(err) } err = testenv.CleanCmdEnv(exec.Command(exe, "SignalExitStatus")).Run() if err == nil { t.Error("test program succeeded unexpectedly") } else if ee, ok := err.(*exec.ExitError); !ok { t.Errorf("error (%v) has type %T; expected exec.ExitError", err, err) } else if ws, ok := ee.Sys().(syscall.WaitStatus); !ok { t.Errorf("error.Sys (%v) has type %T; expected syscall.WaitStatus", ee.Sys(), ee.Sys()) } else if !ws.Signaled() || ws.Signal() != syscall.SIGTERM { t.Errorf("got %v; expected SIGTERM", ee) } } func TestSignalIgnoreSIGTRAP(t *testing.T) { if runtime.GOOS == "openbsd" { testenv.SkipFlaky(t, 49725) } output := runTestProg(t, "testprognet", "SignalIgnoreSIGTRAP") want := "OK\n" if output != want { t.Fatalf("want %s, got %s\n", want, output) } } func TestSignalDuringExec(t *testing.T) { switch runtime.GOOS { case "darwin", "dragonfly", "freebsd", "linux", "netbsd", "openbsd": default: t.Skipf("skipping test on %s", runtime.GOOS) } output := runTestProg(t, "testprognet", "SignalDuringExec") want := "OK\n" if output != want { t.Fatalf("want %s, got %s\n", want, output) } } func TestSignalM(t *testing.T) { r, w, errno := runtime.Pipe() if errno != 0 { t.Fatal(syscall.Errno(errno)) } defer func() { runtime.Close(r) runtime.Close(w) }() runtime.Closeonexec(r) runtime.Closeonexec(w) var want, got int64 var wg sync.WaitGroup ready := make(chan *runtime.M) wg.Add(1) go func() { runtime.LockOSThread() want, got = runtime.WaitForSigusr1(r, w, func(mp *runtime.M) { ready <- mp }) runtime.UnlockOSThread() wg.Done() }() waitingM := <-ready runtime.SendSigusr1(waitingM) timer := time.AfterFunc(time.Second, func() { // Write 1 to tell WaitForSigusr1 that we timed out. bw := byte(1) if n := runtime.Write(uintptr(w), unsafe.Pointer(&bw), 1); n != 1 { t.Errorf("pipe write failed: %d", n) } }) defer timer.Stop() wg.Wait() if got == -1 { t.Fatal("signalM signal not received") } else if want != got { t.Fatalf("signal sent to M %d, but received on M %d", want, got) } }