91³Ô¹ÏÍø

Watch CBS News

Human bone found by family looking for shells on beach traced back to banker missing since 1999

A human bone discovered on a California beach in 2022 has been traced back to a man who disappeared more than two decades ago, according to local authorities and the nonprofit organization that helped identify the remains.

Walter Karl Kinney, 59, was last seen on Aug. 10, 1999, according to . The former banker had lived in Santa Rosa, a city in Northern California not far from Salmon Creek State Beach, where his remains were found. A family uncovered the bone while searching for sea shells, the nonprofit said, and a subsequent examination revealed it was possibly a tibia.

No other remains were unearthed from that beach, and the shin bone came to be associated with a then-unknown person dubbed Salmon Creek John Doe. Investigative genetic genealogists with the DNA Doe Project were eventually able to link the bone to Kinney's missing person case, after conducting forensic tests and tracking down some of his relatives, the nonprofit said. 

Once they did, investigators realized that Kinney had been connected with another John Doe case before, when human remains that washed ashore in nearby Bodega Bay were determined to belong to him several years after he went missing.  

"This case was unusual – it's not often we see someone end up as a John Doe twice," said Traci Onders, who led the team that worked his case at the DNA Doe Project, in a statement.

walter-kinney-missing-person.jpg
Walter Karl Kinney disappeared in 1999. DNA Doe Project

Sonoma Sheriff Eddie Engram, whose office partnered with the DNA Doe Project to identify Kinney, thanked the nonprofit .

"Thank you to the DNA Doe Project for helping us put a name to the human remains found at Salmon Creek Beach," Engram said. "We value this partnership as we continue working together to identify remains found in Sonoma County." 

Kinney's daughter has described her father to investigators as "smart, sensitive, almost to a fault," saying "this world was just too harsh a place for him," according to the DNA Doe Project.

Investigative genetic genealogy is an advanced forensic technique that relies on DNA tests and family ties to help resolve unsolved cases, often involving people who have been missing for a long time. In January, the technique was used to identify the remains of a former Oregon mayor who was declared dead in 2006, when authorities presumed he drowned while crabbing along the Oregon coast. His skeletal remains were found on a beach in Washington state.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });